查询失败数据未插入数据库

时间:2020-07-01 11:34:17

标签: php postgresql

这些是我数据库中的字段

  • 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));查询失败。

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 Bobbythis 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;
相关问题