php 怎样用数组作为查询条件并输出

来源:百度知道 编辑:UC知道 时间:2024/06/15 01:54:44
希望在网页的侧边栏显示出用户最后浏览过的8本书的资料,下面代码中数组 $id 是包含了从 cookie 中提取出来的8个记录的 id 号码, 如果这时 echo "$id" 已能显示8个整数例如 2 5 7 3 8 9 6 4, 这8个号码随不同的浏览页面而改变. 想用 $id 作为查询条件输出每本书的资料, 试了下面的代码:

$sql = ("SELECT id, title, author FROM books WHERE id = $id");
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result)) {
echo "{$data['title']}"."_"."{$data['author']}"."<br>"; }

但这样只能输出最后一本书的资料, 请教高手怎样才能取出全部8本书的资料?谢谢!!!
感谢大师继续指导! 资料补充:

$id='2 5 7 3 8 9 6 4'; //当用 echo "$id"." "; 检查是中间空格分隔的.

//当用 echo "$id"."<br"; 检查显示出如下:
2
5
7
3
8
9
6
4

我也试了
$sql = 'SELECT id, title, author FROM books WHERE id in ('.implode(',',preg_split('/\s+/',trim($id))).')';
echo $sql; //这时也只显示最后浏览的 1 项记录如: SE

这个问题很简单,用个for循环就可以了。
首先获取数组$id的成员个数。
$num=count($id);
for($i=0;$i<$num;$i++)
{
$sql = "SELECT id, title, author FROM books WHERE id = $id[$i]");
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result)) {
echo "{$data['title']}"."_"."{$data['author']}"."<br>"; }
}
这样就可以输出全部书籍的资料了。

下面这样就可以:

<?php
$id='2 5 7 3 8 9 6 4';//中间是空格分隔的吧,你没说,我只是猜测
$sql='select id,title,author from booke whete id in ('.implode(',',preg_split('/\s+/',trim($id))).')';
//echo $sql;//能输出select id,title,author from booke whete id in (2,5,7,3,8,9,6,4)
//接下来是你的语句,我小改了一下:
$result = mysql_query($sql);
while (list($rid,$rtitle,$rauthor)=mysql_fetch_array($result))
echo "{$rtitle}_{$rauthor}<br>";
mysql_free_result($result);
?>

补充: