2013-09-22 3 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, который мы можем распечатать каждый раз а цикл проверяет его условное утверждение.

Когда больше нет строк, функция вернет FALSE, заставив цикл while остановиться!

Следовательно, он будет продолжать печатать данные, пока эта функция не возвращает ложь

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

Это хорошая рекомендация, но она, однако, не отвечает на исходный вопрос, который задал ОП. –

+0

@AmalMurali Я предоставил ответ, используя pdo/mysqli, то почему я предоставил OP ответ, поскольку mysql_fetch_array будет работать с циклом, другой мудрый OP получит первую запись, поэтому я предполагаю, что мой ответ должен касаться надлежащего кода, который я предоставил, если я используя различную технику для ответа –

Смежные вопросы