How to get affected row count on WordPress query?

时间:2017-12-30 15:21:40

标签: php mysql wordpress csv

This code is to use in WordPress plugin.

The following is my code I am using to insert data from CSV file to database:

$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);

When I do this var_dump($query); it shows int(0), and data is successfully inserted in table. My question is how can I get number of inserted rows?

4 个答案:

答案 0 :(得分:0)

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

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

$ count是受影响的行。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

在这种特殊情况下,使用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来获得它,这也值得检查。

毫无疑问,自您提出此问题已有2年了,您还有许多其他可行的解决方案;希望这对在这里搜索解决方案的人有用。

答案 3 :(得分:0)

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

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

echo $wpdb->affected_rows;