1

ここのどこかで初歩的なミスを犯しているような気がしますが、何が問題なのかわかりません。PHPとmySQLを使用しています。現在のユーザーの情報を格納する配列 $users があります。配列には顧客 ID (cid、整数) が格納されています。そのため、特定の顧客にのみタグ付けされた情報を取得しようとしています。私のコードは次のとおりです。

try
{
    $sql = 'SELECT id, title, image_url FROM shelf WHERE cid = $user['cid']'; 
    $result = $pdo->query($sql);
}

プログラムの他の部分で同様のコードが動作しているように感じるので、構文に関して何か間違っている可能性があるようです。$user['cid']リクエストを 22 などのハードコードされた数字に置き換えると、ステートメントは正常に機能します。ただし、$user から整数を取得する必要があります。T_STRINGSELECT ステートメント行でエラーが発生します。また、単一引用符の追加セットを追加しようとしまし$user['cid']たが、それも機能しません(つまり$user['cid'])

ご協力いただきありがとうございます。

より糸

4

3 に答える 3

3

PDO を使用しているため、プレースホルダーも使用する必要があります。

$stmt = $pdo->prepare('SELECT id, title, image_url FROM shelf WHERE cid=:cid');
$stmt->bindParam(':cid', $user['cid']);
$stmt->execute();

これにより、データが正しくエスケープされ、必要に応じて適切なデータベース形式への変換が処理されます。

于 2012-09-25T14:22:23.580 に答える
2

うん、ルーキーエラー。二重引用符に変更し、次のように値を { } で囲みます。

$sql = "SELECT id, title, image_url FROM shelf WHERE cid = {$user['cid']}"; 
于 2012-09-25T14:19:34.730 に答える
-2

$sql = 'SELECT id、title、image_url FROM シェルフ WHERE cid = '.intval($user['cid']);

于 2012-09-25T14:21:19.913 に答える