Php mysql_fetch_assoc()期望参数1是给定的资源布尔值
我最近在我的主机上升级了我的PHP版本,我认为这是导致这个错误的原因。每当我启动apache并调用这个include文件来访问数据库时,apache就会开始生成千兆字节的错误。我查看日志并收到此错误 PHP警告:Php mysql_fetch_assoc()期望参数1是给定的资源布尔值,php,sql,Php,Sql,我最近在我的主机上升级了我的PHP版本,我认为这是导致这个错误的原因。每当我启动apache并调用这个include文件来访问数据库时,apache就会开始生成千兆字节的错误。我查看日志并收到此错误 PHP警告:mysql\u fetch\u assoc()希望参数1是资源,布尔值在第22行的/var/www/html/includes/database.config.PHP中给出 第22行是 while(($c = mysql_fetch_assoc($rsetCoupons)) !== fa
mysql\u fetch\u assoc()希望参数1是资源,布尔值在第22行的/var/www/html/includes/database.config.PHP中给出
第22行是
while(($c = mysql_fetch_assoc($rsetCoupons)) !== false)
我猜它会在列出的每个地方产生这个错误
有人知道是什么导致了这一切吗?当前的PHP版本是
PHP5.3.2(cli)(构建时间:2011年6月25日08:12:19)
版权所有(c)1997-2010 PHP集团
Zend Engine v2.3.0,版权所有(c)1998-2010 Zend Technologies
(显然,我在代码的开头删去了connect的变量)
$rsetCoupons在执行时不是mysql查询资源。要么查询失败,要么变量丢失在某处
我相当肯定你的质疑是失败的。您应该检查mysql\u查询的返回,如果返回为false,则检查mysql\u error()
此外,您不应该抑制mysql\u connect和mysql\u select\u db调用中的错误。如果无法建立数据库连接,您应该更优雅地处理它,而不是让页面在随后的每次mysql调用中出错。这可能就是你的错误所在。如果您正在抑制错误以向用户隐藏错误,面向公众的PHP站点应该将display_errors设置为off,但您仍然应该记录错误。这个答案意味着(通常)您的查询语法是错误的
在这种情况下,您使用的是$rsetCoupons=query('SELECT*FROM优惠券订单BY优惠券\ u id ASC')
然后是mysql函数,改用mysql\u query
我相当肯定它只是mysql_query()的包装。他的queryFetch似乎暗示它调用mysql\u query,然后返回mysql\u fetch\u assoc,问题是数据库没有连接。不过,你的回答有些准确。query与mysql\u同义我的问题最终出现在连接字符串define('mysql\u DATABASE','DATABASE');实际上它应该是define('MYSQL_数据库','repair_数据库');的确由于数据库调用不准确,连接失败。我在调用一个不存在的数据库。你的回答为我指明了正确的方向。感谢you@bažmegakapa:感谢您的关注,使这至少更加规范。非常感谢。
@mysql_connect(MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD);
@mysql_select_db(MYSQL_DATABASE);
define('DOMAIN', 'MYDOMAINISTHIS.com');
$parse_version = queryFetch('SELECT version,secret FROM version ORDER BY version_id DESC LIMIT 0,1');
$VERSION = $parse_version['version'];
$SECRET = $parse_version['secret'];
$VALID_COUPONS = array();
$rsetCoupons = query('SELECT * FROM coupons ORDER BY coupon_id ASC');
while(($c = mysql_fetch_assoc($rsetCoupons)) !== false)
{
$VALID_COUPONS[$c['code']] = $c['percent'];
}
$salutations = array();
$rsetSalutations = query('SELECT * FROM salutations ORDER BY salutation_id ASC');
while(($c = mysql_fetch_assoc($rsetSalutations)) !== false)
{
$salutations[] = $c['salutation'];
}
$BASE_PRICE_QTY = array();
$UPGRADE_PRICE = array();
$rsetPrices = query('SELECT * FROM cart_prices ORDER BY qty ASC');
while(($c = mysql_fetch_assoc($rsetPrices)) !== false)
{
$BASE_PRICE_QTY[] = $c['unit_price'];
$UPGRADE_PRICE[] = $c['upgrade_price'];
}
function insert($hash, $table)
{
$fields = implode(',', array_keys($hash));
$values = implode('","', $hash);
$query = sprintf('INSERT INTO %s (%s) VALUES("%s")', $table, $fields, $values);
query($query);
}
function query($query)
{
return @mysql_query($query);
}
function queryFetch($query)
{
return @mysql_fetch_assoc(query($query));
}
function p($key, $default = '')
{
if (isset($_POST[$key]))
{
return $_POST[$key];
}
else
{
return $default;
}
}
function g($key, $default = '')
{
if (isset($_GET[$key]))
{
return $_GET[$key];
}
else
{
return $default;
}
}