gpt4 book ai didi

PHP + mySQL 在循环中插入多行到表时 myphp 挂起/卡住/

转载 作者:行者123 更新时间:2023-11-29 08:18:34 63 4
gpt4 key购买 nike

我在将循环中的行插入 mySQL 表时遇到一些奇怪的问题。让我首先向您展示我使用的 php 代码,然后我描述一些统计数据。

我倾向于认为这是某些 mySQL 问题,但完全不知道是什么类型的问题。每分钟在表中的最大插入次数? (无法达到最大行数 - 磁盘上有大量空间)

 <p></p>

<pre><code>echo " For character=" . $row[1];
$xml = simplexml_load_file($api_url);
$i=0;
foreach ($xml->result->rowset->row as $value) {
$newQuery = 'INSERT INTO '.$tableName.' (transactionDateTime, quantity, typeName, price, clientName, station, transactionType, seller) VALUES ("'.$value['transactionDateTime'].'",'.$value['quantity'].',"'.$value['typeName'].'","'.$value['price'].'","'.$value['clientName'].'","'.$value['stationName'].'","'.$value['transactionType'].'","'.$row[1].'")';
$i++;
if (!mysqli_query($conn, $newQuery)) {
die('Error while adding transaction record: ' . mysqli_error($conn));
} // if END
} // foreach END
echo " added records=" . $i;
</code></pre>

<p></p>
我在 XML 中有相同的数据,没有改变。 (XML 有大约 1400 多行我要插入的内容)

  • 总是插入不同数量的行。最大插入量在800+左右
  • 如果我在 $i==400 的 foreach 循环中插入大约 10 秒的延迟,它将添加更少的行。更多的延迟 - 更少的行。
  • 它永远不会到达 mysqli_error($conn) 的代码部分
  • 它永远不会到达 echo "添加的记录= "。 $i;代码的一部分。

由于它总是在不同的记录上停止,我必须假设 INSERT 查询没有任何问题。因为它永远不会到达 foreach 循环之后的行 echo "添加记录= 。 $i; 我还假设 XML 数据最后没有被处理。如果我使用其他数据源(另一个字符),其中 XML 中的记录较少,则此代码可以正常工作。

我的问题可能是什么?

最佳答案

可能是您在 SQL 服务器上触发了多个查询。最好通过 foreach 构建单个 SQL 查询,然后触发一次。

基本上是这样的:

$db = new mysqli($hostname, $username, $password, $database);
if($db->connect_errno > 0)
{
$error[] = "Couldn't establish connection to the database.";
}
$commaIncrement = 1;
$commaCount = count($result);
$SQL[] = "INSERT INTO $table $columns VALUES";
foreach ($result as $value)
{
$comma = $commaCount == $commaIncrement ? "" : ",";
$SQL[] = "(";
$SQL[] = "'$value[0]'"."'$value[1]'"."'$value[2]'"."'$value[3]'";
$SQL[] = ")$comma";
$commaIncrement++;
}
$SQL[] = ";";
$completedSQL = implode(' ',$SQL);
$query = $db->prepare($completedSQL);
if($query)
{
$db->query($completedSQL)
}
$db->close();

关于PHP + mySQL 在循环中插入多行到表时 myphp 挂起/卡住/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20037469/

63 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com