download2565 2015-03-17 19:20
浏览 255
已采纳

Foreach语句仅显示数据库中的1条记录而不是假定的数量

I am selecting rows from the database. When I print_r it is showing 3 records, but inside my 2nd foreach it's only showing 1 record.

      //get productid
        $product = $database->prepare("SELECT * FROM bids,orders,products WHERE bids.bids_username=? AND NOW() > products.enddate AND orders.orders_status=0 GROUP BY bids.bids_item ORDER BY bids.bids_amount DESC");
        $product->execute(array($username->username));
        $productid = $product->fetchAll();

        print_R($productid);
        //check if order is in database
        foreach($productid as $product):
            $order = $database->prepare("SELECT * FROM orders WHERE orders_product=? AND orders_username=?");
            $order->execute(array($product->bids_item, $username->username));
            $result = $order->fetchAll();
        endforeach;

        //insert order
        if(!$result):
        $createorder = $database->prepare("INSERT INTO orders(orders_username,orders_product,orders_firstname, orders_lastname, orders_address1, orders_address2, orders_zipcode, orders_city, orders_country, orders_btcaddress, orders_status) VALUES(?,?,?,?,?,?,?,?,?,?,?)");
        foreach($productid as $product):
        echo  $product->bids_item;
               //get btc address, check it's valid, then if isset run query below
               $createorder->execute(array($username->username, $product->bids_item, $username->firstname, $username->lastname, $username->address1, $username->address2, $username->zipcode, $username->city, $username->country, 'jkjkjk', 0));
               return 1;
        endforeach;
        endif;

Whem I echo the bids_item it's only showing 1 result when it should run through all 3 and echo them all. Is there anything in my code that looks wrong?

  • 写回答

2条回答 默认 最新

  • dongou3286 2015-03-17 19:31
    关注

    The error lies in your second foreach loop

    foreach($productid as $product):
        echo  $product->bids_item;
        //get btc address, check it's valid, then if isset run query below
        $createorder->execute(array($username->username, $product->bids_item, $username->firstname, $username->lastname, $username->address1, $username->address2, $username->zipcode, $username->city, $username->country, 'jkjkjk', 0));
       return 1;
    endforeach;
    

    The return statement causes all execution to stop the first run through. Remove the return statement and it should function as expected.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测