sql syntax error

0

I'm trying to do an insert in the database but I'm having a syntax problem, I still can not identify the error.

$sql='INSERT INTO tabela   
    (
        nome, 
        nit, 
        rg, 
        cpf, 
    )
    VALUES';

foreach($dados as $linha_bd)
{
$sql=$sql."('"
'".$linha_bd['nome']."',
'".$linha_bd['nit']."',
'".$linha_bd['rg']."',
'".$linha_bd['cpf']."')";

}

    
asked by anonymous 09.03.2015 / 18:52

1 answer

1

Remove the comma after cpf

$sql = 'INSERT INTO tabela(nome, nit, rg, cpf,) VALUES ';
 --------------------------------------------^

The concatenation here is inverted

$sql=$sql."('"'".$linha_bd['nome']."','".$linha_bd['nit']."','".$linha_bd['rg']."','".$linha_bd['cpf']."')";

wrong:

$sql."('"'".$linha_bd['nome']."'
-----^   | 
abriu    |  
         |essa aspa simples ficou da concatenação

To eliminate the php syntax error you can do this:

$sql .= "('{$linha_bd['nome']}'"

Another way to correct the syntax error with sprintf , use the appropriate parameters for each type of data %s is for strings.

foreach($arr_entrada as $linha_bd){
    $sql .= sprintf("('%s', '%s', '%s', '%s'),", $linha_bd['nome'],$linha_bd['nit'], $linha_bd['rg'], $linha_bd['cpf']);
}
$sql = substr($sql, 0, -1); //remove a ultima virgula se o objetivo é gerar um insert com varios VALUES

phpfiddle - example

    
09.03.2015 / 19:15