mysql_query () возвращает true, но mysql_num_rows () и mysql_fetch_array () дают "недействительные ошибки ресурса

Вот код, о котором идет речь:

Из index.php:

require_once('includes/DbConnector.php'); // Create an object (instance) of the DbConnector $connector = new DbConnector(); // Execute the query to retrieve articles $query1 = "SELECT id, title FROM articles ORDER BY id DESC LIMIT 0,5"; $result = $connector->query($query1); echo "vardump1:"; var_dump($result); echo "\n"; /*(!line 17!)*/ echo "Number of rows in the result of the query:".mysql_num_rows($result)."\n"; // Get an array containing the results. // Loop for each item in that array while ($row = $connector->fetchArray($result)){ echo '<p> <a href="viewArticle.php?id='.$row['id'].'">'; echo $row['title']; echo '</a> </p>'; 

От dbconnector.php:

 $settings = SystemComponent::getSettings(); // Get the main settings from the array we just loaded $host = $settings['dbhost']; $db = $settings['dbname']; $user = $settings['dbusername']; $pass = $settings['dbpassword']; // Connect to the database $this->link = mysql_connect($host, $user, $pass); mysql_select_db($db); register_shutdown_function(array(&$this, 'close')); } //end constructor //*** Function: query, Purpose: Execute a database query *** function query($query) { echo "Query Statement: ".$query."\n"; $this->theQuery = $query; return mysql_query($query, $this->link) or die(mysql_error()); } //*** Function: fetchArray, Purpose: Get array of query results *** function fetchArray($result) { echo "<|"; var_dump($result); echo "|> \n"; /*(!line 50!)*/$res= mysql_fetch_array($result) or die(mysql_error()); echo $res['id']."-".$res['title']."-".$res['imagelink']."-".$res['text']; return $res; } 

Вывод:

 Query Statement: SELECT id, title FROM articles ORDER BY id DESC LIMIT 0,5 vardump1:bool(true) PHP Error Message Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /*path to*/index.php on line 17 Number of rows in the result of the query: <|bool(true) |> 

Сообщение об ошибке PHP

 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /*path to*/DbConnector.php on line 50 

Ваша проблема заключается в паре:

 return mysql_query($query, $this->link) or die(mysql_error()) 

это должно было быть написано так:

 $result = mysql_query($query, $this->link); if(!$result) die(mysql_error()); return $result; 

В динамических языках это часто встречается or возвращает первый object который оценивает значение true, но в PHP результат X or Y всегда является истинным или ложным .

Как вы можете узнать из руководства, тип возвращаемого значения mysql_query не является логическим, а ресурсом.
Что-то в коде конвертирует его

Согласитесь с выше, у вас есть проблема с вашим mysql_query. Он никогда не должен возвращать Истину. Либо ложь, либо ресурс.

Рефакторинг: mysql_query ($ query, $ this-> link) или die (mysql_error ())

echo mysqlerror () после вашего запроса и посмотреть, что такое сообщение об ошибке. У вас, вероятно, нет действительного соединения.