不同的结果多个查询与rand布尔mysql和php


different result multiple query with rand boolean mysql and php

我需要给出一个不同的结果:

  1. 你可以吃三明治
  2. 你可以吃三明治,但不能吃甜甜圈。
  3. 你可以吃甜甜圈和喝酒。

必须是随机选取的

问题就是结果。

首先,我必须创建一个mysql数据库布尔表,包含

 +-------------------------------------+
 |  ids|name | sandwich | donuts| drink|
 |   1 | josh|    1     |   1   |   1  |
 |   2 | john|    0     |   1   |   0  |
 |   3 | mike|    1     |   0   |   0  |
 |   4 | mic |    0     |   1   |   1  |
 +=====================================+

我在php中写了一些代码,但似乎第一个目标是好的,但第二个我有一个问题。问题是第二个。有人不能一边吃三明治一边吃甜甜圈。我从第二个得到的结果是,它显示的是吃甜甜圈的人的列表,而不是我想要的。

代码有问题吗?…

这是我所做的php代码。

    <?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="test1"; // Database name
$tbl_name="skill"; // Table name

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT ids, name FROM skill WHERE sandwich='1' ORDER BY rand() LIMIT 3";
$result=mysql_query($sql);
?>
eat sandwich is
<?
while($rows=mysql_fetch_assoc($result)){
echo $rows['name']."<br>";}?>

<br>
eat donut
<?
$sql1="SELECT ids, name FROM skill WHERE donuts='1' ORDER BY rand() LIMIT 3";
$result1=mysql_query($sql1);
?>
<?
while($rows1=mysql_fetch_assoc($result1)){
    if ($result <> $result1)
    {echo $rows1['name'];}
    else
    {echo nono;}
}?>

我不知道你用while循环做什么。将限制表示为WHERE子句,即使它非常冗长,如:

SELECT ... FROM users
  WHERE (sandwich='1' AND donuts!='1')
    OR (sandwich='0')
  ORDER BY RAND()

对于选择的行,任何其他限制都可以在这里分层。

需要注意的是,除非绝对必要,否则不要在新代码中使用mysql_query。它已经从PHP中删除了,因为它已经过时了,如果使用不当的话,它是不安全的。