0
$search = mysql_query("SELECT subject FROM book WHERE useid = $userid") or die(mysql_error());
$sub = mysql_fetch_array($search, MYSQL_ASSOC);
print_r($sub);

book表中有很多相同用户id的主题,但它只检索第一个,为什么会这样?

4

3 回答 3

2

mysql_fetch_array仅返回当前行的数组表示:

以关联数组、数值数组或两者的形式获取结果行

您必须使用循环遍历所有返回的行:

$search = mysql_query("SELECT subject FROM book WHERE useid = $userid") or die(mysql_error());
while($sub = mysql_fetch_array($search, MYSQL_ASSOC)) {
    print_r($sub);
}
于 2013-09-22T08:22:22.533 回答
0

你必须解析这个结果

while($sub = mysql_fetch_array($search, MYSQL_ASSOC)){
 print_r($sub);
}

这样做的原因

mysql_fetch_array 函数返回一个关联数组,但如果没有更多行要返回,它也会返回 FALSE!使用 PHP While 循环,我们可以利用这些信息来发挥我们的优势。

如果我们将语句“$row = mysql_fetch_array()”作为我们的 while 循环的条件语句,我们将完成两件事:

我们将获得一行新的 MySQL 信息,我们可以在每次 while 循环检查其条件语句时打印出来。

当没有更多行时,该函数将返回 FALSE 导致 while 循环停止!

因此它将继续打印数据,直到函数返回 false

于 2013-09-22T08:24:17.020 回答
0

由于 mysql* 已正式贬值,您应该使用 mysqli* 或准备好的语句

//$Conn =  new mysqli(host, username, pass, db);   
$sqlquery = "SELECT subject FROM book WHERE useid = $userid";    
//Execute the query reurns data into a $result
$result = $Conn->query($sqlquery);    
//results into a associative array
$resultArray = $result->fetch_all(MYSQLI_ASSOC); 
print_r($resultArray);

PDOStatement::fetchAll

<?php
$sth = $dbh->prepare("your query");
$sth->execute();

/* Fetch all of the remaining rows in the result set */
print("Fetch all of the remaining rows in the result set:\n");
$result = $sth->fetchAll();
print_r($result);
?>
于 2013-09-22T08:32:19.060 回答