2011-07-29 47 views
0

我寫了一個PHP類,對於一些MySQL的提出像更新和將數據插入表 每一件事將是確定只有1功能不太好 它的功能我寫的表內更新記錄我的一個mysql類的函數有問題嗎?

function update($table=null,$array_of_values=array(),$conditions='FALSE') { 
     if ($table===null || empty($array_of_values)) return false; 
     $what_to_set = array(); 
     foreach ($array_of_values as $field => $value) { 
      if (is_array($value) && !empty($value[0])) $what_to_set[]="'$field'='{$value[0]}'"; 
      else $what_to_set []= "'$field'='".mysql_real_escape_string($value,$this->con)."'"; 
     } 
     $what_to_set_string = implode(',',$what_to_set); 
     return $this->execute("UPDATE $table SET $what_to_set_string WHERE $conditions"); 
    } 

當我試圖用來更新一些領域,它不會返回任何錯誤,並不能在這一切工作

+0

需要查看您的數據庫控制器。 – afuzzyllama

+1

只是一種排除故障的技術,但可以打印出實際執行的語句。然後嘗試在mysql命令行上執行精確的語句(基本上將php從圖片中刪除)並查看它在哪裏投訴。另外,php需要在php.ini文件中設置適當的錯誤報告級別來顯示錯誤。 –

+0

它是什麼,我已經做了凱文,這出了我找出問題,謝謝你的意見 – Marco

回答

0

你已經把單引號圍繞你的列名稱。標識符不會用單引號括起來,除非聲明別名。

UPDATE table SET color = 'red' 

UPDATE table SET 'color' = 'red' 

這是你的代碼產生什麼。如果你想允許保留字作爲標識符,那麼把它們放在'反引號'而不是'單引號'中。

+0

感謝您的建議,但它不工作 – Marco

+0

1)我不能提供任何更多的幫助,因爲我不知道是否做出了正確的更改 –

+0

2)此功能不應存在。使用PDO或mysqli準備好的語句。你不需要自己推出這個,而且你做得不好。所有的值也不屬於單引號。 –