2012-02-07 16 views
0

PHP経由でテーブルを更新するのが難しいです。 MySQLのプロンプトまたはクライアントアプリケーションを使用すると、SQLコマンドは正常に動作しますが、PDOを使用してPHPで試行すると失敗します。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(); 

イムかなり確信してそのわずかSQL言語構造へのフィールド名から混乱が、DESCは、フィールド名があることをPDOオブジェクト/プリペアドステートメントを伝える方法があります?あなたはid = 1を持って

すなわち何かリンケ

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

バッククックで試してみましたか? –

答えて

2

、ないid = :id

あなたが存在していないパラメータにバインドすることはできません。

また、DESCは予約語で、バッククォートで引用しないと使用できません。

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

おっとありがとう、良い例を修正する、btw:これは私の実際のコードではありません – IEnumerable

+0

ああ、この文字を使用する理由.... – IEnumerable

+0

毎回私はこれを見て、私はそれが一重引用符だと思った!今これは理にかなっています。それほど感謝します。すべて今働いている – IEnumerable

関連する問題