- ベストアンサー
SQLが走らない
なぜかSQLが走りません。 エラーもでません。 カテゴリーリンクを押したら、そのカテゴリに書いた記事が表示されるようにしています。 $stmt = $pdo->query('SELECT * FROM ' . DATABASE_TABLE_ARTICLE . ' LEFT JOIN ' . DATABASE_TABLE_CATEGORY . ' USING (cid) WHERE cid = :cid ORDER BY date DESC'); $stmt->bindValue(':cid', $cid, PDO::PARAM_INT); if (!$stmt) { db_error($pdo->errorInfo()); } 1.$cidの値は取れています。 2.WHERE文をなくすと文が表示されます。 3.:cidに直接数字4とかを入れると大丈夫です。 4.cid = :cidのところがおかしいようです。 この記述どこか間違っているでしょうか? ほかの動いている部分のスクリプトをもってきているのですが・・・。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
バインドが上手く言ってないようですね。 PHPのようですが、PDOでのバインドの方法って違ったような記憶があります・・・ 定かではないですがステートメントを取得するには query()じゃなくて prepare()じゃなかったでしたっけ? $stmt = $pdo->prepare('~省略 WHERE cid = :cid ORDER 以下略~'); $stmt->bindValue(':cid', $cid, PDO::PARAM_INT); if (!$stmt) { db_error($pdo->errorInfo()); }
その他の回答 (1)
- dora7075
- ベストアンサー率39% (103/261)
言語もDBの種類も不明ですが・・・ 上記で問題なのは ' USING (cid) WHERE cid = :cid ORDER BY date DESC' の「:cid」も文字列としているからです。変数として書きましょう。
お礼
回答ありがとうございました。