2013-07-19 4 views
-2

Я сделал код на php, чтобы модифицировать содержимое ячеек mysql, но мой код возвращает ошибку: У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом «(datanasc, rg, rgemissor, cpf, sexo, cnh, tituloeleitor, zonaeleitoral,» в строке 1ошибка синтаксиса php & mysql

<?php 
    include('mysql.php'); 
    mysql_select_db("teste", $conexao); 

    $schema = array('idfunc', 'nomefunc', 'rg', 'rgemissor', 'cpf', 'cnh', 'reservista', 'estrangeiro', 'tituloeleitor', 'zonaeleitoral', 'sindicato', 'matsindical', 'estadocivil', 'datanasc', 'nacionalidade', 'naturalidade', 'endereco', 'salario', 'expediente', 'cargahoraria', 'beneficiarios', 'admissao', 'numeropis', 'banco', 'agencia', 'dataretroativo', 'datadispensa', 'sexo', 'nomepai', 'nomemae', 'funcao', 'linkfoto'); 
    $fields = array(); 
    $values = array(); 
    foreach($_POST as $key => $val){ 
     if (in_array($key, $schema)){ 
      $fields[] = "`".mysql_real_escape_string($key)."`"; 
      $values[] = "`".mysql_real_escape_string($val)."`"; 
     } 
    } 

    $ins = mysql_query("UPDATE funcionarios SET(".implode(",",$fields).") VALUES(".implode(",",$values).")") or die(mysql_error()); 
    echo "Funcionário modificado com sucesso."; 


    mysql_close($conexao) 
    ?> 
+1

Это не правильный синтаксис UPDATE. //dev.mysql.com/doc/refman/5.0/en/update.html –

ответ

2

Ваш запрос неправильно формируется, потому что вы в основном с помощью оператора INSERT со словом «UPDATE» используется вместо «INSERT»

оператор обновления структурирована следующим образом:.

UPDATE table_name SET column = value WHERE column = conditional_value; 

В то время как вы пытаетесь выполнить обновление, как это:

UPDATE table_name SET(column) VALUES(value); 
1

Правильный синтаксис update является

UPDATE table_name 
SET column_name = value, column_2 = value.... 
WHERE column1 = value 

Но ваш запрос будет производить как

UPDATE funcionarios SET column1,column2,... VALUES val1,val2,... 
+0

Как я могу получить число каждого столбца в массиве? – caio

0

изменение это линия:

"`".mysql_real_escape_string($val)."`"; 

в

"'".mysql_real_escape_string($val)."'"; 

и нет необходимости бежать столбец

"`".($key)."`" 

Затем измените код на:

foreach($_POST as $key => $val){ 
     if (in_array($key, $schema)){ 
      $updates[] = " `$key` = '".mysql_real_escape_string($val)."'"; 
     } 
} 

и эту линию:

$ins = mysql_query("UPDATE funcionarios SET ".implode(", ", $updates)) or die(mysql_error()); 
+0

Скрипт работает хорошо, но он не изменяет запись mysql. – caio

0

Это значит, что ваш запрос неверен из-за ошибок. Распечатайте свой запрос («Обновить ...»), чтобы просмотреть структуру и проверить, где ошибка в вашем запросе. Кроме того, ваш оператор обновления неверен.

Смежные вопросы