PHP mysqli查询输出错误


PHP mysqli query output wrong

此问题已解决(在页面底部编辑(

foreach语句中查询的输出出现问题。出于某种原因,变量的转储会给出NULL NULL等,而不是表Items的正确输出。有人知道是什么原因造成的吗?

        <?php
        $offers_array = array();
        $query = "select trade_offer.*, gebruikers.naam, gebruikers.image_url from trade_offer join gebruikers on gebruikers.id = trade_offer.sender_id where receiver_id = ?";
        $stmt = $db->prepare($query);
        $stmt-> bind_param('i', $gebruiker->id); 
        $stmt->execute();
        $result = $stmt->get_result();
        while ($row = $result->fetch_assoc()){
        $offers_array[] = $row; 
        }
        foreach($offers_array as $offer){
        $query_fetch = "select * from items where id in (?,?,?,?,?,?,?,?)";
        $stmt = $db->prepare($query_fetch);
        $stmt-> bind_param('iiiiiiii', $offer['receiver_gets_1'], $offer['receiver_gets_2'], $offer['receiver_gets_3'], $offer['receiver_gets_4'], $offer['sender_gets_1'], $offer['sender_gets_2'], $offer['sender_gets_3'], $offer['sender_gets_4']);
$stmt->execute();
$stmt->bind_result($col1, $col2, $col3, $col4);
    while($stmt->fetch()){
        $id = $col1;
        $naam = $col2;
        $prijs = $col3;
        $image = $col4;
        echo $id;
        echo $naam;
        echo $prijs;
        echo $image;
    }   
}?>

抛售$offer:

Array
(
    [id] => 8
    [receiver_id] => 2
    [sender_id] => 3
    [receiver_gets_1] => 10
    [receiver_gets_2] => 15
    [receiver_gets_3] => 18
    [receiver_gets_4] => 13
    [sender_gets_1] => 19
    [sender_gets_2] => 14
    [sender_gets_3] => 17
    [sender_gets_4] => 9
    [accepted] => 
    [naam] => John
    [image_url] => http://www.example.com/img.jpg
)

项目表内容:

id   naam  prijs  image_url
1    item1  2.00  example.com
2    item2  2.00  example.com
3    item3  2.00  example.com
4    item4  2.00  example.com
5    item5  2.00  example.com
6    item6  2.00  example.com
etc.

谢谢!

编辑:我根据Kim Alexander的回答编辑了我的代码,现在出现了以下错误:Fatal error: Call to a member function bind_param() on boolean in ......'tradeoffers.php on line 31

第31行:

$stmt-> bind_param('iiiiiiii', $offer['receiver_gets_1'], $offer['receiver_gets_2'], $offer['receiver_gets_3'], $offer['receiver_gets_4'], $offer['sender_gets_1'], $offer['sender_gets_2'], $offer['sender_gets_3'], $offer['sender_gets_4']);

我想你的意思不是:

 $result = $stmt->get_result($col1, $col2, $col3, $col4);
    while($stmt->fetch()){
        $id = $col1;
        $naam = $col2;

但是

$stmt->bind_result($col1, $col2, $col3, $col4);
    while($stmt->fetch()){
        $id = $col1;
        $naam = $col2;