2013-07-19 51 views
-2

我在php上修改了一些mysql單元格內容的代碼,但是我的代碼返回了錯誤: 您的SQL語法有錯誤;檢查對應於你的MySQL服務器版本正確的語法使用附近的手冊 '(datanascrgrgemissorcpfsexocnhtituloeleitorzonaeleitoral',在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語句的結構類似於這樣:

UPDATE table_name SET column = value WHERE column = conditional_value; 

而你試圖執行這樣一個UPDATE:

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

這意味着您的查詢由於錯誤而不正確。 打印出您的查詢(「更新...」)以查看結構並驗證錯誤在您的查詢中的位置 此外,您的更新聲明不正確