这些是我数据库中的字段
partamento int
codigocurso int
diurno int
contacto int
pos_laboral int
contacto2 int
proc_por int
从昨天开始,我一直在尝试纠正此错误,但我无法弄清楚错误出在哪里。 **
foreach ($diurno as $userId) {
$data .= "(".$id.",".$grdid.",".$userId.",".$contacto.",".$pos_laboral.",".$contacto2.",".$idd.")";
}
$data = rtrim($data, ',');
$sql = "insert into cursosprogramas (departamento, codigocurso, diurno, contacto, pos_laboral, contacto2, proc_por) values (".$data.");";
echo $sql;
错误
插入cursosprogramas(partamento,codigocurso,diurno,contacto,pos_laboral,contacto2,proc_por)值((100,120,7,646,5,363,2)(100,120,4,646,5,363,2));查询失败。
答案 0 :(得分:2)
您在数据集之间缺少逗号,并且也不需要在所有括号之间加上括号。您已经在使用rtrim()
删除最后一个逗号,但实际上并没有在数据集的末尾添加逗号。
foreach ($diurno as $userId) {
//add a comma at the end
//note you can write variables directly into a string that is wrapped with double quotes
$data .= "('$id', '$grdid', '$userId', '$contacto', '$pos_laboral', '$contacto2', '$idd'),";
}
//this gets rid of the very last comma in the string
$data = rtrim($data, ',');
//remove parenthesis around `$data`
$sql = "insert into cursosprogramas (departamento, codigocurso, diurno, contacto, pos_laboral, contacto2, proc_por) values {$data};";
echo $sql;
注意:Little Bobby说this code MAY be at risk for SQL Injection Attacks取决于$data
内部变量的创建方式。通过Prepared Statements了解parameterized queries。
答案 1 :(得分:1)
您需要在值元组之间使用逗号。在第二行的末尾尝试逗号,如下所示:
foreach ($diurno as $userId) {
$data .= "(".$id.",".$grdid.",".$userId.",".$contacto.",".$pos_laboral.",".$contacto2.",".$idd."),";
}
$data = rtrim($data, ',');
$sql = "insert into cursosprogramas (departamento, codigocurso, diurno, contacto, pos_laboral, contacto2, proc_por) values (".$data.");";
echo $sql;