Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP foreach未将整个数组插入mysql表_Php_Arrays_Loops - Fatal编程技术网

PHP foreach未将整个数组插入mysql表

PHP foreach未将整个数组插入mysql表,php,arrays,loops,Php,Arrays,Loops,嗨,我已经创建了一个简单的foreach循环,它通过一个数组循环,并将数据插入到我的db表中。我遇到的问题是,即使数组包含196行,也只向数据库中插入了130行 这是我的密码: foreach ($currencyArray as $currency) { if (count($currency) > 1) { $currency_table = $db->prepare(' INSERT INTO currency_name (sy

嗨,我已经创建了一个简单的foreach循环,它通过一个数组循环,并将数据插入到我的db表中。我遇到的问题是,即使数组包含196行,也只向数据库中插入了130行

这是我的密码:

foreach ($currencyArray as $currency) {

    if (count($currency) > 1) {
        $currency_table = $db->prepare('
            INSERT INTO currency_name (symbol, name, btc_value)
            VALUES (:name, :symbol, :btc_value)
        ');

        $currency_table->bindParam(':name', $currency[0]);
        $currency_table->bindParam(':symbol', $currency[1]);
        $currency_table->bindParam(':btc_value', $currency[2]);

        $currency_table->execute();
    }
}
我已经确定问题不是由if语句引起的。我在if语句中添加了一个count,这个count 197记录了我在db表中期望的行数,但它只存储了130行


如果您还认为有一种更快的方法可以将数组插入db表,请随意分享:)

我发现了错误,这是我的错误,我正在插入数据库的一些名称比我允许的长度长

您可以检查,批量插入。您不需要
准备()
每次迭代时的查询。您应该在foreach循环之前进行准备,然后在循环中执行数据。@TareqAlbajjaly大多数答案都是过时的,OP正在尝试使用准备好的语句。您链接到的答案要么使用过时的
mysql\uuu
函数,要么使用与此处不相关的CodeIgniter。@GrumpyCrouton如果向下滚动一点,您会发现一个批处理准备插入的示例,仅供参考,建议不要在循环中执行/插入。您应该准备数据,然后将其作为一个批插入。是否有任何错误?您应该使用
try
catch
查看sql是否在某些数据上失败。