警告:mysql_fetch_array():提供的参数不是有效的MySQL结果

试图运行时出现错误:

<?php require_once('includes/DbConnector.php'); $connector = new DbConnector(); $result = $connector->query('SELECT title,content FROM staff_vacancies ORDER BY ordering LIMIT 0,100'); // Get an array containing the results. // Loop for each item in that array while ($row = $connector->fetchArray($result)){ echo $row['title'].'</h3>'; echo $row['content']; } ?> 

我有一个链接的文件:DbConnector.php:

 <?php //////////////////////////////////////////////////////////////////////////////////////// // Class: DbConnector // Purpose: Connect to a database, MySQL version /////////////////////////////////////////////////////////////////////////////////////// require_once 'SystemComponent.php'; class DbConnector extends SystemComponent { var $theQuery; var $link; //*** Function: DbConnector, Purpose: Connect to the database *** function DbConnector(){ // Load settings from parent class $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']; //the settings $host = 'localhost'; $db = 'xxx'; $user = 'xxx'; $pass = 'xxx'; // Connect to the database $this->link = mysql_connect($host, $user, $pass); mysql_select_db($db); register_shutdown_function(array(&$this, 'close')); } //*** Function: query, Purpose: Execute a database query *** function query($query) { $this->theQuery = $query; return mysql_query($query, $this->link); } //*** Function: getQuery, Purpose: Returns the last database query, for debugging *** function getQuery() { return $this->theQuery; } //*** Function: getNumRows, Purpose: Return row count, MySQL version *** function getNumRows($result) { return mysql_num_rows($result); } //*** Function: fetchArray, Purpose: Get array of query results *** function fetchArray($result) { return mysql_fetch_array($result); } //*** Function: close, Purpose: Close the connection *** function close() { mysql_close($this->link); } } ?> 

有谁知道问题是什么?

您的查询必须有一个导致$ result成为无效资源的问题。

尝试在运行查询的行之后检查mysql_error() 。

编辑:

事实上,我会改变你的DBConnector类的函数query(),如下所示,以便在发生错误的查询时抛出一个可识别的错误:

 function query($query) { $this->theQuery = $query; $queryId = mysql_query($query,$this->link); if (! $queryId) { throw new Exception(mysql_error().". Query was:\n\n".$query."\n\nError number: ".mysql_errno(); } return $queryId; } 

这个错误意味着你的查询失败。 如果发生错误,则mysql_query()返回false,然后将false传递给触发错误消息的mysql_fetch_array()

您的查询可能由于丢失/错误的表或字段而失败。 要查看详细错误,请打印出mysql_error()的结果。

mysql_*库已被弃用。 build议升级到MySQLi或PDO。

 // Load settings from parent class $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']; //the settings $host = 'localhost'; $db = 'xxx'; $user = 'xxx'; $pass = 'xxx'; 

你的意思是重新分配连接variables吗? 或者是你忘记取出的几行存根代码? 或者只是一个例子来显示$设置包含什么?

请提供来自mysql_error()的错误。 没有这个,我只能猜测…试图逃脱你的字段名称?

 $result = $connector->query('SELECT `title`,`content` FROM `staff_vacancies` ORDER BY `ordering` LIMIT 0,100'); 

您的查询必须有一个导致$ result成为无效资源的问题。

用这个

 <?php require_once('includes/DbConnector.php'); $connector = new DbConnector(); $result = $connector->query('SELECT title,content FROM staff_vacancies ORDER BY ordering LIMIT 0,100'); // Get an array containing the results. // Loop for each item in that array if($result){ while ($row = $connector->fetchArray($result)){ echo $row['title'].'</h3>'; echo $row['content']; } } ?> 

我在post里find这个,给我解决了我的问题。 SLDS。

是的,答案很简单,使用的查询不是一个真正的结果,因为它是一个查询里面的getrow可以这么说..这里是修复:find所有这样的线:

 mysql_fetch_array(mysql_query("...snip...";-) ); 

只需在它前面添加一个“@”,看起来像这样:

 @mysql_fetch_array(mysql_query("...snip...";-) ); 

然后做同样的事情为下面的行..代码:

 mysql_num_rows(mysql_query("...snip...";-) ); 

通过添加“@”来执行与上面相同的步骤,看起来像这样:

 @mysql_num_rows(mysql_query("...snip...";-) ); 

所有这一切都说“在YYY内做xxx”,否则由于缺less结果值而死机。 这是一个PHP的东西..

工程就像一个魅力,拿了我5分钟撕裂整个代码,并将其全部拍成Modernbill,共享相同的数据库,并为我完美的作品。