Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果存在,则不选择PHP循环_Php_Mysql_Sql_While Loop - Fatal编程技术网

如果存在,则不选择PHP循环

如果存在,则不选择PHP循环,php,mysql,sql,while-loop,Php,Mysql,Sql,While Loop,我想问一下这是否可行?通过选择一个项目的名称将其计算为库存,并对所选项目进行num_行,在第二个循环中,该项目将不会被选中,因为它在第一个循环中已被选中 i、 e 我有这张桌子 我有两份苹果,一份鸡肉 这是我的密码 $sql = "SELECT * FROM products"; $res = mysqli_query($con,$sql); while($row = mysqli_fetch_assoc($res)){ $stock_query = "SELECT * FROM p

我想问一下这是否可行?通过选择一个项目的名称将其计算为库存,并对所选项目进行num_行,在第二个循环中,该项目将不会被选中,因为它在第一个循环中已被选中

i、 e

我有这张桌子

我有两份苹果,一份鸡肉

这是我的密码

$sql = "SELECT * FROM products";
$res = mysqli_query($con,$sql);
while($row = mysqli_fetch_assoc($res)){ 
     $stock_query = "SELECT * FROM products WHERE name = '".$row['name']."' LIMIT 1";
     $stock_res = mysqli_query($con,$stock_query);
       while($stock_row = mysqli_fetch_assoc($stock_res)) {
           $stocks_count = "SELECT * FROM products WHERE name = '".$stock_row['item_name']."' AND category = '".$stock_row['category']."'";
           $stock_count_res = mysqli_query($con,$stocks_count);
           $stock_available = mysqli_num_rows($stock_count_res);
           echo $stocks_available; //output here is 2
           echo $stock_row['category'].'<br/>';         
           echo $stock_row['name'].'<br/>';
  }
}
输出是

回路1

2.蔬菜和苹果存货是什么

蔬菜

苹果

环路2

2.蔬菜和苹果存货是什么

蔬菜

苹果

环路3

1.肉鸡汤怎么样

如何避免第二个循环

我不是做SQL注入的黑客,我有尊严。我正在建立自己的系统。
一切从头开始。

试试这段代码,它可能会对你有所帮助

$sql = "SELECT distinct a.name, (SELECT distinct b.category FROM products b
WHERE b.name=a.name) as 'category', (select count(c.name) from products c where c.name=a.name) as 'count' FROM products a";
$res = mysqli_query($con,$sql);
$rows=[];
while($row = mysqli_fetch_assoc($res)){ 
    echo "Name: " . $row["name"] . "<br/>";
    echo "Category: " . $row["category"] . "<br/>";
    echo "Count: " . $row["count"] . "<br/><br/>";
}
答案并没有针对各种情况进行测试。请在您的项目中针对各种案例场景进行测试。 在将来开始使用准备好的语句,这些语句非常简单和棒。mysqli函数已弃用。
祝你一切顺利

了解防止SQL注入的预处理语句mysqli_prepare?yes prepare->bind->executean以及可能在一个查询中获得所有这些结果的联接SQL语法。实际上,仔细看,所有这些查询都在同一个products表中。我想你只需要去喝杯咖啡,然后回来重新思考一下你是如何做你想做的事情的谢谢你的好意!希望我将来能学会那些新的密码。。这里有很多自吹自擂的程序员低估了其他程序员的知识,希望有一天你会成功!你了解我的处境,非常感谢!你100%的工作真的帮了我很多:谢谢you@AzeRonquillo感谢您的评论和代码反馈。我相信你很快就能学会编码。这里有很多自吹自擂的程序员,但请不要生气,最终我们都在这里互相帮助:。再次感谢您的好意评论。很高兴有你在这里。祝你一切顺利
$sql = "SELECT distinct a.name, (SELECT distinct b.category FROM products b
WHERE b.name=a.name) as 'category', (select count(c.name) from products c where c.name=a.name) as 'count' FROM products a";
$res = mysqli_query($con,$sql);
$rows=[];
while($row = mysqli_fetch_assoc($res)){ 
    echo "Name: " . $row["name"] . "<br/>";
    echo "Category: " . $row["category"] . "<br/>";
    echo "Count: " . $row["count"] . "<br/><br/>";
}