2012-02-07 36 views
0

我無法通過PHP更新表。 使用MySQL提示或客戶端應用程序的SQL命令工作正常,但當我嘗試在PHP中使用PDO它失敗。PHP PDO聲明MySQL在查詢時失敗

我已經取出'desc'字段並且PHP腳本有效。我認爲它越來越困惑與ASC/DES

$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
$sql = "UPDATE Menu SET name=:name, desc=:desc WHERE id = :id" 

$st = $conn->prepare ($sql); 


$st->bindValue(":id", $this->id, PDO::PARAM_INT); 
$st->bindValue(":name", $this->name, PDO::PARAM_STR); 
$st->bindValue(":desc", $this->name, PDO::PARAM_STR); 


$b = $st->execute(); 

Im相當肯定它從字段名到SQL語言結構只是困惑,但有沒有告訴PDO對象/預處理語句的方式,說明是一個字段名?

即一些臨客

(this does not work by the way) 
    $sql = "UPDATE Menu SET name=:name, \'desc\'=:desc WHERE id=:id 
+0

試過反引號? – 2012-02-07 08:02:40

回答

2

你有id = 1,不id = :id

您不能綁定到一個不存在的參數。

另外DESC是一個保留字,你不能用引號反引用它。

$sql = "UPDATE `Menu` SET `name`=:name, `desc`=:desc WHERE `id`=:id" 
+0

哎呀謝謝,更好的修復這個例子,順便說一句:這不是我的實際代碼 – IEnumerable 2012-02-07 08:04:01

+0

ahhh使用這個字符的原因.... – IEnumerable 2012-02-07 08:08:54

+0

每當我看到這個在線時,我認爲這是一個單引號!現在這是有道理的。歡呼謝謝你這麼多。所有現在工作 – IEnumerable 2012-02-07 08:09:51