【问题标题】:How to get affected row count on WordPress query?如何在 WordPress 查询中获得受影响的行数?
【发布时间】:2018-06-10 15:20:50
【问题描述】:

此代码用于 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


【解决方案1】:

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

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

$count 是您受影响的行。

【讨论】:

  • 问题是wordpress代码,我用的是mysql
  • @PriME 检查我的编辑。在您的代码中,不需要 var_dump。
  • 你测试了吗?
  • 你测试了吗? @PriME
  • 请正确阅读问题,$count = $wpdb->query($sql);在此代码$count输出int(0)
【解决方案2】:

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

在这种使用 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】:

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

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

    echo $wpdb->affected_rows;
    

    【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2018-05-13
      • 1970-01-01
      • 2013-02-16
      • 2010-11-08
      • 1970-01-01
      • 2017-12-14
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多