插入。 while循环,mysql

时间:2013-10-25 20:41:03

标签: php mysql

我是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库并触摸存储过程,而这种数据传输是必需的。有人可以帮助我,提供解决方案,还是展示这个地方,我可以阅读更多关于这类问题的内容吗?

3 个答案:

答案 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