2016-04-07 2 views
2

Поэтому у меня есть следующий код:print_r только показать первый ряд

$sql = mysql_query("SELECT result FROM table1"); 
$result = mysql_fetch_array($sql); 
print_r($result); 

То, что я хочу сделать здесь только, чтобы проверить, будет ли отображаться данные, которые выбраны выше или нет, но результат от print_r только показать первую строку данных.

например, Array ([0] => 2 [result] => 2)

Когда я проверяю базу данных, нет ничего плохого в данных. После первой строки есть еще несколько строк.
Возможно, это какой-то глупый вопрос, но может кто-нибудь мне помочь? Спасибо.

+1

НЕ используйте 'mysql_ *' он был удален, и он больше не будет работать, используйте 'PDO' [ссылка] (http://php.net/manual/en/book.pdo.php) или 'mysqli' [ссылка] (http://php.net/manual/en/book.mysqli.php). – Tom

+2

['mysql_fetch_array'] (http://php.net/manual/en/function.mysql-fetch-array.php) извлекает только одну строку. Вам нужно будет перебирать несколько строк, используя цикл. См. [Примеры на php.net] (http://php.net/manual/en/function.mysql-fetch-array.php#example-1802). Обратите внимание, что функции 'mysql_ *' обесцениваются. Вместо этого я предлагаю использовать PDO или MySQLi. Кстати, PDO позволяет вам получать все строки сразу с помощью ['fetchAll'] (http://php.net/manual/en/pdostatement.fetchall.php). – showdev

ответ

1

Попробуйте некоторое время, чтобы извлечь все строки, а не только первые один:

$sql = mysql_query("SELECT result FROM table1"); 
while ($row = mysql_fetch_array($sql)) { 
    print_r($row); 
} 

Для каждого вызова mysql_fetch_array это принести только один ряд, а когда нет больше строк нет, то вы получите ложный ответ.

Продолжительность цикла и вызов для каждого цикла mysql_fetch_array до тех пор, пока они не вернутся назад.

Вы также можете написать, чтобы получить 2 строки, но тогда у вас есть «статический» код и ни более 2 строк:

$sql = mysql_query("SELECT result FROM table1"); 
$row1 = mysql_fetch_array($sql); 
$row2 = mysql_fetch_array($sql); 

, и если у вас есть только одна строка в таблице, вы получите этот результат:

$row1 = Array ([0] => 2, [result] => 2); 
$row2 = false; 
+0

спасибо! Я не знаю почему, но это работает!:) – lacyeex

+0

@aureliadsp работает, потому что вы зацикливаете на каждую строку, используя цикл while –

-1
$sql = mysql_query("SELECT result FROM table1"); 
$count = mysql_num_rows($sql); 
if($count>0){ 
//anything here 
} 
1

Я знаю, что ты не просил его, но ли нЕ использовать mysql_*, как он был удален, вы можете использовать PDO или mysqli вместо этого.

<?php 
$con=mysqli_connect("localhost","your_user_name","your_password","your_db"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$sql="SELECT result FROM table1"; 
$result=mysqli_query($con,$sql); 

// Fetch all rows as an associative array 
$rows = mysqli_fetch_all($result,MYSQLI_ASSOC); 

print '<pre>';  
print_r($rows); 
print '</pre>';  

// Free result set 
mysqli_free_result($result); 

mysqli_close($con); 
?> 
0

со следующими, вы получите все в одном кадре:

$result = mysqli_fetch_all($sql, MYSQLI_ASSOC); 

Работы из v5.3.0 +. Источники: PHP.net и W3Schools

Обратите внимание, что в качестве родного драйвера вам понадобится MySQLnd!

Доступно только с mysqlnd.

Чтобы напечатать его в более структурированном виде, вот как:

echo "<pre>"; 
print_r($result); 
echo "</pre>"; 
Смежные вопросы