在SQL语句中增加数组索引会引发错误

时间:2015-05-03 17:39:22

标签: php mysql sql arrays mysqli

我想insert进入sql数据库,数组中的项目。我所做的就是使用INSERT循环在cash[$i+1]命令(for)中递增数组的索引。但它显示错误:

  

意外' +',预期']'

我该如何解决这个问题?

for($i = 0; $i < count($cash_list); $i = $i+8) {
    $sql = "INSERT INTO Payments VALUES('$cash_list[$i]','$cash_list[$i+1]','$cash_list[$i+2]','$cash_list[$i+3]','$cash_list[$i+4]','$cash_list[$i+5]','$cash_list[$i+6]','$cash_list[$i+7]')";

    if (mysqli_query($con, $sql)) 
        echo "yes";
    else
        echo "Error: " . $sql . "<br>" . $con->error;
}

1 个答案:

答案 0 :(得分:0)

这是因为

$i+1

不会被解释为数学表达式。它只是一个字符串。所以你必须concatenate这样的字符串:

$sql = "INSERT INTO Payments 
        VALUES('" . $cash_list[$i] . "',
               '" . $cash_list[$i+1] . "',
               '" . $cash_list[$i+2] . "',
               '" . $cash_list[$i+3] . "',
               '" . $cash_list[$i+4] . "',
               '" . $cash_list[$i+5] . "',
               '" . $cash_list[$i+6] . "',
               '" . $cash_list[$i+7] . "'
       )";

另外,您可能需要查看:mysqli_* prepared statements哪个更安全!  (也请从循环条件中取出count($cash_list)并将其放入变量中,然后在条件中使用变量)