我在使用预准备语句进行多次插入查询时遇到了这个问题。
我有一个循环,经过102次迭代,每次触发插入查询:
$sql = "INSERT INTO xxx SET town=?, city=?, ...";
$stmt = $conn->prepare($sql);
while(... <= 102)
{
$stmt->bind_param("sss", $town, $city, ...);
$stmt->execute();
}
执行期间未捕获任何错误,但数据库中仅记录了98个条目。我已经运行了几次,总是插入98个条目。在某处遗失了4个。
如果我用标准查询替换准备好的语句,则保留其他所有内容,即
while(... <= 102)
{
$sql = "INSERT INTO xxx SET town='$town', city='$city', ...";
mysqli_query($conn, $sql)
}
...然后它工作正常,所有102个项目都插入到数据库中。
由于准备好的语句查询不报告任何错误,我不知道它为什么缺少4个查询。
我怎么去调查这个?
由于数据来自受信任的来源,我可以使用mysqli_query但我宁愿知道发生了什么,以防我将来遇到这种情况。