繁体   English   中英

如何在 WordPress 查询中获得受影响的行数?

[英]How to get affected row count on WordPress query?

此代码将在 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) ,并且数据已成功插入表中。 我的问题是如何获得插入的行数?

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

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

$count 是您受影响的行。

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

我知道很老的问题,也许这个答案是微不足道的,但希望它可能对像我一样偶然发现它的人有用。

在 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;

我知道如果桌面上还有其他同时进行的活动,这可能无法正常工作; 尽管您可以锁定表以防止更新冲突并使加载数据更快。 您可能可以使用 $wpdb->affected_rows 获得此信息,这也值得检查。

毫无疑问,自从你问这个问题是 2 年前,你有许多其他可行的解决方案; 希望这对在这里搜索解决方案的任何人都有用。

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

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

echo $wpdb->affected_rows;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM