【发布时间】:2015-12-11 22:09:49
【问题描述】:
我的准备好的语句无法在第二次迭代中运行时遇到问题,我想知道是否需要释放它或我缺少的东西?
// $sheetData an array created from an Excel Sheet
for($i=0; $i <= count($sheetData); $i++) {
$sql;
$sql .= "INSERT INTO equipment";
$sql .= "(tag,date)";
$sql .= "VALUES(?,?)";
$sql .= "ON DUPLICATE KEY UPDATE number=VALUES(tag), date=VALUES(date)";
if($stmt = $db->prepare($sql)) {
if(Utility::filterNull($sheetData[$i][$idxOfTag]),Utility::convertDT($sheetData[$i][$idxOfDate]) != "1969-12-31 23:59:59") {
$stmt->bind_param("ss",$sheetData[$i][$idxOfTag],$sheetData[$i][$idxOfDate]);
$stmt->execute();
}
} else {
DebugLog($debugFileName,"Prepared Statement is false. Error: " . $stmt->error);
DebugLog($debugFileName,"i = " . $i);
}
} // i loop
它仅在第二次迭代时返回错误。
DebugLog($debugFileName,$db->error);
=
You have an error in your SQL syntax;
check the manual that corresponds to your
MySQL server version for the right syntax
to use near 'INSERT INTO equipment (tag,date' at line 1
所以基本上在我的数据库中,它将添加电子表格的第一行,仅此而已。
这不是语法错误,因为第一次迭代有效。
有什么想法吗?
到现在为止,至少已经坚持了 2-3 个小时。
【问题讨论】:
标签: php mysql mysqli prepared-statement