此查询的目的是从同一个表中检索真实图像和3个随机生成的图像,然后随机显示它们。用户(孩子)必须选择正确的图像。
由于
$sql= "SELECT * FROM `login` WHERE `user` = '$word'";
" UNION"
"SELECT * FROM `login` WHERE `user` != '$word' ORDER BY RAND() LIMIT 3";
$row2=mysql_query($sql);
$i=1;
while ($r = mysql_fetch_array($row2))
{
echo '<td> ';
echo '<img src="sigg/'.$r['img'].'" width="130" height="130" /><br>';
echo $r['user'];
echo '</td>';
$i++;
}
答案 0 :(得分:3)
使用UNION
clause:
$sql = "(SELECT * FROM `login` WHERE `user` = '$word')";
$sql.= " UNION";
$sql.= " (SELECT * FROM `login` WHERE `user` != '$word' ORDER BY RAND() LIMIT 3)";
$sql.= " ORDER BY RAND()";
要获得可以使用的结果,例如 MySQLi
(在OP添加带有mysql_*
函数的代码之前提出:
$MySQL=new mysqli("localhost", "username", "password", "database");
$query = $MySQL -> query($sql);
while ($entry = $query -> fetch_row())
{
// $entry is an array with the results, use for example:
echo $entry[0]; // will return the first column of your table
echo $entry[1]; // will return the second column of your table
// try also:
var_dump($entry); // outputs everything for testing purposes
}
请不要使用mysql_*
函数,它们是deprecated,将在未来的PHP版本中删除。请改用MySQLi
或PDO
。有关详细信息,请参阅Why shouldn't I use mysql_* functions in PHP?。
答案 1 :(得分:0)
您的要求不够明确,无法提供可靠的答案,所以我会尽力回答。
您应该在查询中使用Union来获取一个大的条目列表。但是,只是做
SELECT * FROM `login` WHERE `user` = '$word'
UNION
SELECT * FROM `login` WHERE `user` != '$word' ORDER BY RAND() LIMIT 3
将为您提供一个条目列表,其中第一部分为user = $word
,其他3个条目为
正如我所说,我不知道这个的确切目的,但我认为你最好从数据库服务器查询整个列表。
答案 2 :(得分:0)
这是php代码:
$connection = mysql_connect(HOST, USER, PASSWORD);
mysql_select_db(DATABASE_NAME, $connection);
$sql = "SELECT img, user FROM `login` WHERE `user` = '{$word}' UNION SELECT img, user FROM `login` WHERE `user` != '{$word}' ORDER BY RAND() LIMIT 3";
$results = mysql_query($sql, $connection);
$rows = array();
// Insert results in a new array to shuffle it
while ($row = mysql_fetch_array($results)) {
$rows[] = array(
'img' => $row['img'],
'user' => $row['user']
);
}
shuffle ($rows); // Randomize order
// Construct HTML
$html = '';
foreach ($rows as $entry) {
$html .= '<td><img width="130px" height="130px" src="sigg/' . $entry['img'] . '">
$html .= $user . '</img></td>';
}
echo $html;
您需要用必要的内容替换大写单词。 一些解释:
*
(使用更少的内存)echo
依赖于缓冲而不将其发送到浏览器,但该选项可能已关闭:What is output buffering)。