2013-09-22 28 views
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); 

书本表中有许多主题与相同的用户标识相同,但它仅检索第一个主题,为什么如此?SQL仅检索数据库中的第一个项目

从结果集中取得一行作为关联阵列,数字数组,或两者

你必须使用循环来遍历:当前行

回答

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); 
} 
+0

啊,我明白了。多谢兄弟。 –

0

您必须解析此结果

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

之所以这样

mysql_fetch_array函数返回一个关联数组,但如果没有更多行返回它也返回FALSE!使用PHP While Loop,我们可以将这些信息用于我们的优势。

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

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

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

因此它会继续下去,直到函数返回false

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); 

OR 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); 
?> 
+0

这是一个很好的建议,但它不回答OP问的原始问题。 –

+0

@AmalMurali我已经提供了使用pdo/mysqli的答案,那么为什么我会提供OP的答案,因为mysql_fetch_array将与循环一起工作其他明智的OP会得到第一个记录,所以我认为我的答案应该与我提供的正确代码相关,如果我是用不同的技巧来回答 –

相关问题