【问题标题】:INSERT IGNORE INTO - Number of rows inserted [duplicate]INSERT IGNORE INTO - 插入的行数 [重复]
【发布时间】:2014-02-01 17:06:12
【问题描述】:

我将使用一个查询在表中插入大约 500 条记录:

$sql = "INSERT IGNORE INTO `table_name` (`field1`,`field2`)
        VALUES ('val1','val2') ('val3','val4') ... ";
// php_mysql_insert_function

执行查询后如何知道插入了多少行?

【问题讨论】:

  • @sskoko,当然可以!
  • 推荐这个可能有帮助的*.com/questions/12623778/…
  • @Aravinth 不,我的问题是关于insert ignore
  • affected_rows 也应该适用于插入忽略 => *.com/questions/5254799/…
  • @Wikunia 那是一条记录,返回 0 或 1,而不是在一个查询中插入 500 条

标签: php mysql


【解决方案1】:

答案是affected_rows

$db = new mysqli('127.0.0.1','...','...','...');
$sql = "INSERT IGNORE INTO Test (id,test) VALUES (1,2),(1,3),(2,2),(3,4)";
$ins_test = $db->prepare($sql);
$ins_test->execute();
echo $db->affected_rows;

在本例中,Test 有 2 列 id 和 test(均为整数),id 是主键。在此插入之前该表为空。

程序回显 3.

【讨论】:

    【解决方案2】:

    试试这个:

    编码的程序风格:

    <?php
    $host = ''; 
    $user = '';
    $password = '';
    $database = '';
    
    
    $link = mysqli_connect($host, $user, $password, $database);
    
    if(!$link)
    {
        echo('Unable to connect to the database!');
    }
            ELSE {
               $sql = "INSERT IGNORE INTO `table_name` (`field1`,`field2`) VALUES ('val1','val2'), ('val3','val4')"; 
               $result = mysqli_query($link, $sql);
                        echo mysqli_affected_rows($link);
                    }
    
            mysqli_close($link);
    ?>
    

    mysqli_affected_rows 计算插入次数。我认为@wikunia 的回答可能会产生相同的结果。在维基尼亚击败我之前,我正在回答你的问题。反正我是放的。

    【讨论】: