2013-12-08 51 views
-2

每當我嘗試保存到一個int字段。不正確的語法使用PHP :: PDO保存到INT字段

這是我做過什麼:

$query = "Update comments Set comment_authorized = 1 Where id = 4"; 
$result = $pdo->prepare($query); 
$result->execute(); 

這是我的錯誤:

>SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Set comment_authorized = 1 Where (id = 4)' at line 1 

同樣的方法效果很好插入non-INT列時。我只是不知道爲什麼這不起作用。

我已經調試過這個,並不能找出結果。畢竟,這是一個非常簡單的基本陳述。

+1

你顯示你所使用的精確查詢:

不過,我現在在這樣的查詢使用前消毒,每個參數值?錯誤說不同。 –

+0

通過接受不正確的答案濫用網站是不是要走的路。 –

+0

他接受了我的回答,我可以不接受嗎?這看起來不正確。 :/ – matrixdevuk

回答

0

給這一個鏡頭:

$query = "UPDATE `comments` SET `comment_authorized`=? WHERE `id`=?"; 
$result = $pdo->prepare($query); 
$result->bindParam(1, 1, PDO::PARAM_INT); 
$result->bindParam(2, 4, PDO::PARAM_INT); 
$result->execute(); 
+0

謝謝。我會嘗試的! – Aweda

+0

做到了,但仍然得到相同的錯誤。這是非常嚴重和令人沮喪的。 非常基本的事情給這個錯誤! 反正我會嘗試另一種方法。 再次感謝您。 – Aweda

+0

輸出是什麼? – matrixdevuk

-1

我最終得到了這個解決不使用綁定方法和上面提供。令人驚訝的是,這正是我所做的,我只是在我發佈的問題中解釋了腳本的查詢。

$id = Security::sanitize($id);

$query = "UPDATE comments SET comment_authorized = 1 WHERE id = $id"; ...

+0

這種「衛生處理」不會使任何「安全」的東西成爲可能,並且您的查詢仍然很脆弱。 –

+0

無論如何謝謝你。令人厭惡的是,當插入到非INT字段中的int字段失敗時,相同的( - > prepared, - > bindValue或 - > bindParam, - > execute)查詢模式運行良好。這很可怕,令人沮喪,你知道! – Aweda