我是php的新手,我有一个问题。
$result = mssql_query('stored proc. with some parameters');
while ($row = mssql_fetch_row($result)){
mysqli_query('INSERT INTO dbname VALUES ($row[0], $row[1], ... , $row[15] );') or die ('Insertion mistake.');
}
问题是,在~430次插入后我得到了die()异常。 $ result查询的大小最多可达100.000个结果。我无法访问MS库并触摸存储过程,而这种数据传输是必需的。有人可以帮助我,提供解决方案,还是展示这个地方,我可以阅读更多关于这类问题的内容吗?
答案 0 :(得分:0)
创建单个查询可能会更快。
$result = mssql_query('stored proc. with some parameters');
$query = '';
while ($row = mssql_fetch_row($result)){
$query .= "INSERT INTO dbname VALUES ($row[0], $row[1], ... , $row[15]),";
}
mysqli_query($query) or die('Insertion mistake.');
答案 1 :(得分:0)
我觉得这样做的好多了:
while ($row = mssql_fetch_row($result)){
$values = "({$row[0]}, {$row[1]}, ... , {$row[15]})";
}
$query = 'INSERT INTO dbname VALUES ' . implode(',', $values);
mysqli_query($query) or die('Insertion mistake.');
我没有显示它,但你需要在插入之前通过mysqli_real_escape_string()运行数据$ row [0]等...
此外,在查询中,您需要引用非目标数字列类型的数据:“{$ row [0]}”等,如果它是文本。
答案 2 :(得分:0)
我认为你的内存不足。您可以添加到脚本的顶部:
ini_set('memory_limit','512M');
这会将脚本的最大内存限制设置为512MB。
您还可以尝试在memory_limit
php.ini