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

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

报告相同问题?

悬赏问题

  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名