我在准备好的声明中没有处理第二次迭代的麻烦,我想知道我是否需要释放它或者我失踪的东西?
{{1}}
仅在第二次迭代时返回错误。
{{1}}
因此,基本上在我的数据库中,它将添加电子表格的第一行,而不是其他内容。
这不是语法错误,因为第一次迭代有效。
有什么想法吗?
现在已经坚持了至少2-3个小时。
答案 0 :(得分:1)
将$sql
定义移到for
语句之外:
$sql ='';
$sql .= "INSERT INTO equipment";
$sql .= "(tag,date)";
$sql .= "VALUES(?,?)";
$sql .= "ON DUPLICATE KEY UPDATE number=VALUES(tag), date=VALUES(date)";
for($i=0; $i <= count($sheetData); $i++) {
// removed from here
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
否则,它会在每次迭代时不断添加其他语句。