0

我是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 基础和触摸存储过程,并且需要此数据传输。有人可以帮助我,提供解决方案,或者展示这个地方,我可以阅读更多关于这类问题的信息吗?

4

3 回答 3

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.');
于 2013-10-25T20:44:16.350 回答
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]}' 等。

于 2013-10-25T20:50:47.617 回答
0

我认为您的内存不足。您可以添加到脚本的顶部:

ini_set('memory_limit','512M');

这会将脚本的最大内存限制设置为 512MB。memory_limit您也可以尝试更改php.ini

于 2013-10-25T21:24:08.083 回答