尝试运行时遇到错误:
<?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);
}
}
?>
有谁知道问题是什么?
答案 0 :(得分:17)
您的查询必定存在问题导致$ 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;
}
答案 1 :(得分:2)
此错误表示您的查询失败。如果发生错误, mysql_query()
会返回false,然后您将false传递给 mysql_fetch_array()
,这会触发错误消息。
由于缺少/错误的表或字段,您的查询可能会失败。要查看详细错误,请打印出 mysql_error()的结果。
不推荐使用mysql_*
库。建议升级到 MySQLi
或PDO。
答案 2 :(得分:1)
// 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';
你的意思是重新分配连接变量吗?或者是你忘记取出几行存根代码?或者只是一个示例来显示$ settings包含的内容?
答案 3 :(得分:1)
请提供mysql_error()的错误。没有它我只能猜测...尝试逃避你的字段名称?
$result = $connector->query('SELECT `title`,`content` FROM `staff_vacancies` ORDER BY `ordering` LIMIT 0,100');
答案 4 :(得分:1)
您的查询必定存在问题导致$ 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'];
}
}
?>
答案 5 :(得分:1)
我在帖子中找到了这个,我解决了我的问题。 的SLD。
是的,答案很简单,使用的查询不是真正的结果,因为它是getrow内部的查询,可以这么说。 这是修复: 找到所有看起来像这样的行:
mysql_fetch_array(mysql_query("...snip...";-) );
只需添加&#34; @&#34;在它面前所以它看起来像这样:
@mysql_fetch_array(mysql_query("...snip...";-) );
然后为以下行做同样的事情.. 代码:
mysql_num_rows(mysql_query("...snip...";-) );
通过添加&#34; @&#34;执行与上述相同的步骤。它看起来像这样:
@mysql_num_rows(mysql_query("...snip...";-) );
所有这一切都说明&#34;在yyy&#34;中做xxx时否则,由于缺少结果值,它已经死了。这是一个PHP的东西..
像魅力一样工作,花了我5分钟将整个代码撕成碎片并将其全部打入Modernbill,共享相同的数据库,对我来说非常适合。