2017-03-20 28 views
0

私はこれをしばらく前から行っていましたが、私のSQLにいくつか問題があります。最近私は準備された声明について少し学びました、そして、私はこれまで何も問題なく使っています。しかし、今私は手動でコード化されたクエリをphpmyadminに転送するときにエラーが出ないという問題を抱えていますが、サーバーからコードをexcecuteするとレコードが更新されません。コードで実行されたときに更新クエリが更新されない

excecutedコード:

$stmt = $conn->prepare("UPDATE `diensten` SET `titel` = ':titel', `content` = ':beschrijving', `img` = ':img' WHERE `diensten`.`id` = ':id'"); 
    $stmt->execute(array(':title' => $titel, ':beschrijving' => $beschrijving, ':img' => $img, ':id' => $id)); 

言い訳それがどんな機能を妨げてはならないが、コード内のオランダ。

+0

はにクエリを準備し、あなたの変更この '$ stmtは= $ conn->(「UPDATE dienstenのSETのTITELを準備します=タイトル:id =:id "); ' – Mario

+0

私は複製を再開しました。(http://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double- quotes-and-backticks-in-mysql)は、引用符の種類が一般的であったためです。ここでの問題は、特にパラメータを使った型の取り扱いであり、この特定の問題に答えが集中しないようにすることです(優れた答えはそれをカバーしていますが、アプリケーション言語ではなくMySQLで準備された文を使用しています) 。 –

答えて

2

プリペアドステートメントを使用する場合は、値を一重引用符で囲む必要はありません。型はパラメータ挿入によって処理されます。だから、あなたは単に必要があります。

$stmt = $conn->prepare(" 
UPDATE `diensten` 
    SET `titel` = :titel, 
     `content` = :beschrijving, 
     `img` = :img 
WHERE `diensten`.`id` = :id"); 

は(私は読みやすいように複数行でこれを置く。)

関連する問題