2008-10-31 3 views
0

Я пытаюсь следующий код:не действительный ресурс MySQL

<?php 

    $link = mysql_connect('localhost', 'root', 'geheim'); 
    if (!$link) { 
     die('Could not connect: ' . mysql_error()); 
    } 
    echo 'Connected successfully'; 



    $query = "SELECT * FROM Auctions"; 
    $result = mysql_query($query); 

    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    { 
     foreach($row as $field=>$value) 
     { 
      echo "$field: {$value} <br />"; 
     } 
    } 
    mysql_close($link); 

?> 

И получить эту ошибку:

Warning: mysql_fetch_array(): supplied argument is not a 
    valid MySQL result resource in 
    C:\Programme\EasyPHP 2.0b1\www\test.php on line 14 

Что я упускаю?

+0

Возможный дубликат [Warning: mysql_fetch_ * ожидает, что параметр 1 будет ресурсом, boolean заданной ошибкой] (http://stackoverflow.com/questions/11674312/ warning-mysql-fetch-expects-parameter-1-to-be-resource-boolean-given-error) – 2012-07-31 02:17:21

ответ

9

Вы не выбрали базу данных - используйте mysql_select_db()

Это было бы что-то вроде:

<?php 
    $link = mysql_connect('localhost', 'root', 'geheim'); 
    if (!$link) { 
     die('Could not connect: ' . mysql_error()); 
    } 
    echo 'Connected successfully'; 

    $db_selected = mysql_select_db('foo', $link); 
    if (!$db_selected) { 
     die ('Error selecting database: '. mysql_error()); 
    } 
    echo 'Using database successfully'; 

    $query = "SELECT * FROM Auctions"; 
    $result = mysql_query($query); 
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
     foreach($row as $field=>$value) { 
      echo "$field: {$value} <br />"; 
     } 
    } 
    mysql_close($link); 
?> 
0

Вы получаете что-нибудь возвращенное? Если результаты не найдены, mysql_query возвращает FALSE.

Проверьте, что перед запуском fetch_array.

+0

Если результатов не найдено, он все равно возвращает ресурс, но в нем нет никаких результатов. `mysql_query()` возвращает только false, если есть ошибка. – 2008-10-31 13:25:22

1

$ query = "SELECT * FROM Auctions";

$ result = mysql_query ($ query) или die (mysql_error());

так что вы увидите ошибку

2

Ваш запрос MySQL, возможно, не соответствует ни одной строки в базе данных.

Проверьте возвращаемое значение mysql_query(), которое возвращает «ресурс» на успех и «ложь» при сбое.

$query = "SELECT * FROM Auctions"; 
$result = mysql_query($query); 

if ($result !== false) { 
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
     foreach ($row as $field=>$value) { 
      echo $field . ':' . $value 
     } 
    } 
} else { 
    // query returned 0 rows 
} 

Как и другие также предложили, вы можете использовать mysql_error() посмотреть, если запрос возвращает все ошибки MYSQL

+0

mysql_query возвращает false только при фактической ошибке. Пустой набор результатов не является ошибкой. – KernelM 2008-10-31 13:11:03

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