如何获取 WordPress 查询受影响的行数?

问题描述 投票:0回答:4

此代码用于 WordPress 插件。

以下是我用来将数据从 CSV 文件插入数据库的代码:

$sql="LOAD DATA LOCAL INFILE '".$fileurl."' INTO TABLE ".$table_name."
                FIELDS TERMINATED BY ','
                LINES TERMINATED BY '\r\n' IGNORE 1 LINES (`first_name`,`last_name`, `email`, `mobile_phone`, `address_1`, `address_2`, `city`, `state`, `zip`, `about_us` );
                ";
                $query = $wpdb->query($sql);

当我这样做时

var_dump($query);
它显示
int(0)
,数据已成功插入表中。我的问题是如何获取插入的行数?

php mysql wordpress csv
4个回答
5
投票

Object

$wpdb
包含很多有用的东西。您可以通过转储此对象来查看公共属性来观看此内容。

其中之一就是您搜索的内容:

echo $wpdb->rows_affected;

4
投票

您可以使用下面的方法在查询中找到受影响的行。

$count = $wpdb->query($sql);

$count 是受影响的行。

请参阅 文档了解

$wpdb->query

返回值:

int|bool
对于 CREATE、ALTER、TRUNCATE 和 DROP 查询,布尔值 true。所有其他查询受影响/选择的行数。错误时布尔值 false。


1
投票

我知道,这是一个非常古老的问题,也许这个答案是显而易见的,但发布是希望它对像我一样偶然发现它的人有用。

在这种特殊的 LOAD DATA 情况下,一种选择可能是简单地在 LOAD DATA 之前和之后运行 sql COUNT(),然后取差值:

$count_before = $wpdb->query("SELECT COUNT(*) FROM $table_name");
// LOAD DATA ...
$count_after = $wpdb->query("SELECT COUNT(*) FROM $table_name");
$new_rows = $count_after - $count_before;

我了解如果桌面上同时有其他活动,这可能效果不佳;尽管您可以锁定表以防止更新冲突并使 LOAD DATA 更快。 您也许可以通过 $wpdb->affected_rows 获得此信息,这也值得检查。

毫无疑问,自从您提出这个问题以来已经是两年前了,您还有许多其他可行的解决方案;希望这对在这里搜索解决方案的人有用。


0
投票

您无法使用带有

LOAD DATA
wpdb::query()
语句来获取此信息。它不理解该语句,因此不会自动获取受影响的行数。你自己也无法获得它,因为必要的
wpdb
类属性(
use_mysqli
dbh
)不是
public

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.