php - 向MySQL表插入大量数据只插入1行?

标签 php mysql mysqli

我正在从 IDX/RETS 服务器提取数据,并尝试使用 php 将数据插入到我自己的 MySQL 数据库中。

数据以多个关联数组的形式出现,我循环遍历它们,将每个数组输入到自己的行中。

表本身有 215 列,在我的第一次测试中,我只提取 10 条记录/数组,并且在运行脚本后,我只输入了 1 行。

我已经能够插入所有 10 行,但只能将列数减少到大约 6 列。无论出于什么原因,当尝试输入 10 条记录的所有 215 列时,它总是超时。

我已经尝试过:

ini_set('max_execution_time', 500);

&

set_time_limit(0);

我也尝试将这些值输入到我的 php.ini 文件中,但无论我做什么,脚本似乎只运行大约 15-30 秒。

在输入如此多的列时,我还遗漏了什么或应该做些什么吗?

我的代码只是一个简单的 while 循环,它循环遍历数组。我的插入是这样的:

$sql  = "INSERT INTO rets_property_residentialproperty";
        $sql .= " (`".implode("`, `", array_keys($my_array))."`)";
        $sql .= " VALUES ('".implode("', '", $my_array)."') ";
        $result = mysqli_query($dbcon, $sql) or die(mysql_error());

最佳答案

一方面,不要混合mysqlmysqli接口(interface)函数。对 mysql_error 的调用应替换为对 mysqli_error 的调用。

根本不清楚什么是“超时”。

很可能,INSERT 语句抛出错误,代码进入死区,问题出在 mysql_error 函数上。将该函数替换为 mysqli_error,我敢说您会收到 MySQL 错误。

    ... or die(mysqli_error($dbcon));
                    ^       ^^^^^^
<小时/>

潜在问题很可能是 SQL 语法错误。例如,数组中的某个值可能包含需要转义的字符,例如单引号。

(但是,我只是猜测。)

为了调试,您可以考虑回显 SQL 文本

    echo $sql;

在调用mysqli_query之前。 (然后您可以将该错误与您打算发送到数据库的实际 SQL 文本进行比较。

要处理值中的单引号和其他“危险”字符(以消除 SQL 注入(inject)漏洞),您需要在每个数组值上调用 mysqli_real_escape_string,然后再调用值包含在 SQL 文本中。或者,使用带有绑定(bind)占位符的准备好的语句,然后提供数组值作为绑定(bind)占位符的值。

关于php - 向MySQL表插入大量数据只插入1行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25332936/

相关文章:

PHP/MySQL 按列对结果进行分组

mysql - 检索表中出现次数最多的值

php - 列中值的 MySQL 计数

php - Yii 在命令中使用模型

php - PHP 中缺少一些 CURL 常量

javascript - 创建一个可以离线工作、存​​储数据然后在在线时将其同步到远程 MySQL 的 Web 应用程序?

PHP:如何制作电影和流派列表(示例)- MySQL Join Many-to-Many(想要?)和 PHP?

php - 在 MySql 列上使用 PHP 函数

php - MySQLi count(*)始终返回1

php - PHP-MySQL 或 MySQLi 中哪个最快?