duanli9591 2015-07-07 16:56
浏览 186
已采纳

SQL查询只返回1行

I am working on a php project where users can select a make and model of a car from a form and this will trigger the search for products that apply for that particular combination. When I run the query in SQL, and there are multiple products, I get multiple rows. but when I try to display those results using PHP I only get 1 row. Do you have an idea what I am doing wrong? here's the code:

$query1 = "SELECT * FROM partmakes WHERE MAKE = '$_POST[make]' and MODEL ='$_POST[model]'";
$results1 = mysqli_query($cnx, $query1);
$row1 = mysqli_fetch_assoc($results1);


$query2 = "SELECT * FROM `products` WHERE `PARTNO`= '$row1[PARTMAKE1]' OR (`PARTNO`= 
'$row1[PARTMAKE2]' OR `PARTNO`= '$row1[PARTMAKE3]' OR `PARTNO`= '$row1[PARTMAKE4]');";

$results2 = mysqli_query($cnx, $query2);

echo "These are the products for your car:<br />";
while ($row2 = mysqli_fetch_assoc($results2)){
    extract($row2);
    echo "$row2[PARTNO]<br />";
}

Thanks a lot for your help


edit - content from OP's file http://standtek.com.mx/test/screenshots.docx in the comments

So the user will select from a drop down the make and the model of the car. The first query looks for the make and model in the table: enter image description here

Then I use the information from the PARTMAKE columns as reference for the second query

Here’s an example of the query in phpmyadmin and it shows 4 rows: enter image description here

My current script displays only 1 row for some reason: enter image description here

This is what I want displayed in the results: enter image description here

  • 写回答

1条回答 默认 最新

  • doule0941 2015-07-07 20:17
    关注

    Use a JOIN query and you could return all the rows -

    $query = "SELECT products.* 
              FROM products
              JOIN partmakes 
              ON (
                 products.PARTNO = partmakes.PARTMAKE1 
                 OR 
                 products.PARTNO = partmakes.PARTMAKE2 
                 OR 
                 products.PARTNO = partmakes.PARTMAKE3 
                 OR
                 products.PARTNO = partmakes.PARTMAKE4) 
              WHERE partmakes.MAKE = '$_POST[make]' 
              AND partmakes.MODEL ='$_POST[model]'";
    
    $results = mysqli_query($cnx, $query);
    
    echo "These are the products for your car:<br />";
    
    echo "<table><tr><th>PARTNO</th><th>TITLE</th><th>PRICE</th></tr>";
    
    while ($row = mysqli_fetch_assoc($results)){
        echo "<tr><td>{$row[PARTNO]}</td><td>{$row[TITLE]}</td><td>{$row[PRICE]}</td></tr>";
    }
    echo "</table>";
    

    Make sure to sanitize your $_POST user data.

    You can see the JOIN query working in sqlFiddle - http://sqlfiddle.com/#!9/754feb/4

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 关于#opencv#的问题:使用大疆无人机拍摄水稻田间图像,拼接成tif图片,用什么方法可以识别并框选出水稻作物行
  • ¥15 Python卡尔曼滤波融合
  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥20 能提供一下思路或者代码吗
  • ¥15 用twincat控制!
  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1