我试图将两个数组中的动态数组值作为列添加到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';
}
答案 0 :(得分:0)
到目前为止我看到两个问题:
首先:您在哪里为$noOfTanks
分配值?你的for
循环取决于该值,但是,我没有看到它被分配,这意味着它当前导致NULL
,因此你的循环不会迭代。
第二:此行$statement .= rtrim($statement, ',');
与原始$statement
变量连接,最终以此结束:
'REPLACE INTO tanks (TANK_NAME, TANK_VOLUME) values REPLACE INTO tanks (TANK_NAME, TANK_VOLUME) values '
我假设您想在trim
之后重新分配,在这种情况下执行此操作:
$statement = rtrim($statement, ',');