0

アイテムの詳細を返すクエリがあります。そのアイテムは特定のカテゴリに属しています。したがって、ITEMSテーブルをCATEGORIESテーブルにリンクし、外部キーをITEMSテーブルに保存しました。

ここで、選択したアイテムの詳細に、外部キーの代わりにカテゴリ名も表示するようにします。次のように試しましたINNER JOINが、驚くべきことに、クエリに外部キーが表示されます。

これが私の質問です:

/* Create the prepared statement */
if ($stmt = $mysqli->prepare("SELECT categories.category AS category, 
                                     items.id, 
                                     items.name, 
                                     items.description 
                              FROM items
                              INNER JOIN categories
                                    ON categories.cat_id = items.cat_id
                              WHERE items.id='$id'")) { 

    /* Execute the prepared Statement */
    $stmt->execute();

    /* Bind results to variables */
    $stmt->bind_result($id,$category,$name,$description);

    /* fetch values */
    while ($rows = $stmt->fetch()) {
        ...
    }
...
}

カテゴリ名の出力:

<?php  
echo $category;
?>

ここで何が欠けている可能性がありますか?

4

3 に答える 3

1

バインドの順序が間違っています。次のようになります。

$stmt->bind_result($category, $id, $name, $description);

SELECT句での順序が重要であるため、bind_resultどの列がwich変数にバインドされているかを把握できます。

于 2013-03-26T16:31:20.310 に答える
0

(選択したものから)3つのアイテムを4つの変数にフェッチしているようですが、これは適切ではないと思います。

于 2013-03-26T16:30:37.193 に答える
0

これは私の要素からは程遠いですが、まだ誰も答えていないので、私はショットを撮ると思いました。

クエリで3つのアイテムを選択しているためですか...カテゴリ、ID、説明

次に、変数をバインドするときは、4をバインドします... $ id、$ category、$ name、$ description

したがって、おそらく起こっているのは変数$ idは実際にはカテゴリであり、$ categoryは実際にはidです(これはあなたが見ているものです)

于 2013-03-26T16:32:35.827 に答える