【发布时间】:2015-11-11 10:35:05
【问题描述】:
我正在尝试将两个数组中的动态数组值作为列添加到 mysql 表中,一次多行。我为此创建了一个循环。
当我运行它时,它会产生一个错误,指出我的 MYSQL 语法有错误。当我尝试运行直接在 phpMyAdmin 中生成的查询语句时,它运行良好。所以语法应该不是问题。感谢您的帮助。
function addSystemDataTanks ($db, $tankNamesArray, $tankVolumesArray)
{
global $tankNamesArray;
global $tankVolumesArray;
global $noOfTanks;
$statement = "replace into tanks (TANK_NAME, TANK_VOLUME) ";
$statement .= "values ";
for ($i = 0; $i < $noOfTanks; $i++) {
$statement.= "('".$tankNamesArray[$i]."', '".$tankVolumesArray[$i]."'), ";
}
$statement.= rtrim($statement, ',');
$result = mysqli_query($db, $statement);
if ($result)
{
return true;
}else{
$errno = mysqli_errno($db);
echo "{h4}MySQL Error No: ".mysqli_errno($db)."</h4>";
echo "{h4}MySQL Error: ".mysqli_error($db)."</h4>";
echo "{h4}SQL: ".$statement."</h4>";
echo "{h4}MySQL Affected Rows: ".mysqli_affected_rows($db)."</h4>";
}
return 'NotAdded';
}
【问题讨论】:
-
这里执行的实际查询是什么?
-
删除点?
$statement= rtrim($statement, ','); -
@splash58 所说的并将
rtrim()用于逗号和空格,否则它将不起作用:rtrim($statement, ' ,')。而且您可能应该使用准备好的语句来避免 sql 注入。 -
@jeroen 所说的或从
$statement.= "('".$tankNamesArray[$i]."', '".$tankVolumesArray[$i]."'), ";行中删除最后一个空格字符