1

我正在尝试使用从页面中抓取的内容填充表格。问题是,近二十万个项目同时被插入,破坏了系统。我得到错误:

警告:mysql_query() [function.mysql-query]: MySQL 服务器已在第 15 行的 C:\xampp\htdocs\testing\scrabble2.php 中消失

警告:mysql_query() [function.mysql-query]:在第 15 行的 C:\xampp\htdocs\testing\scrabble2.php 中读取结果集的标头时出错

无法添加项目:MySQL 服务器已消失

<?
include('simple_html_dom.php');
$html = new simple_html_dom();
$html->load_file('http://kisa.ca/scrabble/');
$collection = $html->find('.words');
$con = mysql_connect("localhost","root","root") or die('Could not connect: ' .    mysql_error());
mysql_select_db( 'test' ) or die('Could not select database: ' . mysql_error());
foreach ($collection as $word)
{
    $add_item = "INSERT INTO ScrabbleWords (ID, Words) VALUES ('', '" . $word . "')";
    mysql_query($add_item) or die('Could not add item: ' . mysql_error());
    echo $word;
    echo ", ";
}
echo "Done";
mysql_close($con);
?>

那么我怎样才能用这么大的数组填充我的表呢?

4

3 回答 3

1

使用 MySQL extended inserts,会大大减少查询次数:

INSERT INTO ScrabbleWords (ID, Words) VALUES ('', 'Word1'), ('', 'Word2'), ('', 'Word3'), ...;

您可以循环遍历并将 1000 个单词组合在一起,一次插入一个插入内容。

您还可以增加 MySQL 连接超时:

ini_set('mysql.connect_timeout', 300); // seconds
ini_set('default_socket_timeout', 300);
于 2012-04-28T05:07:34.110 回答
0

尝试像这样使用插入:

INSERT INTO example
    VALUES
  (100, 'Name 1', 'Value 1', 'Other 1'),
  (101, 'Name 2', 'Value 2', 'Other 2'),
  (102, 'Name 3', 'Value 3', 'Other 3'),
  (103, 'Name 4', 'Value 4', 'Other 4');
于 2012-04-28T05:08:43.910 回答
0
于 2012-04-28T05:12:27.753 回答