2013-07-08 79 views
0

我已阅读其他问题。错误发布之前已经发布。这是一个常见的错误。如何/为什么我得到错误是独一无二的。不是重复的。PHP/MySQL错误:警告:mysql_fetch_assoc()期望参数1是资源

我知道这个错误信息已被张贴在之前,但没有与我的具体一套并发症。我最近使用xammp在本地服务器上放置了一个站点。在我上传之前,一切正常工作在我的本地机器上。上传到我的虚拟主机后,我遇到至少8个新问题,但能够修复每个问题。其中3在这个网站的帮助下。我相信在修正这个错误之后我会完成它。

问题在于我的广告旋转系统。这是一个非常简单的脚本/系统。有4个数据库为页面上的4个独立的地方,我有旋转广告。这是我试图放在现场的第二个。我已经有了第一个没有错误的工作。这个错误是在线5

任何想法?一如既往地感谢一堆!

完全错误:下面的代码的

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/xxxxxx/public_html/includes/adverts/sidead1.php on line 5 

部分:

<?php 
    include '../includes/core/db/sidead1_dbinfo.php'; 

    $ads = mysql_query("SELECT `advert_id1`, `title1`, `desc1`, `image1` FROM `sidead1` WHERE UNIX_TIMESTAMP() < `expires1` AND `shown1`=0 ORDER BY `advert_id1` ASC LIMIT 1"); 
    while ($ads_row = mysql_fetch_assoc($ads)) { 
     $advert_id1 = $ads_row['advert_id1']; 
     $image1 = $ads_row['image1']; 
     $title1 = $ads_row['title1']; 
     $desc1 = $ads_row['desc1']; 

     mysql_query("UPDATE `sidead1` SET `shown1`=1, `impressions1`=`impressions1`+1 WHERE `advert_id1`=$advert_id1"); 

     $shown1 = mysql_query("SELECT COUNT('advert_id1') FROM `sidead1` WHERE `shown1`=0"); 
     if (mysql_result($shown1, 0) == 0) { 
      mysql_query("UPDATE `sidead1` SET `shown1`=0"); 
     } 
    } 

    ?> 
+1

请参阅[此答案](http://stackoverflow.com/a/11674313/250259)了解如何解决此问题。 –

+0

我看着答案,但我不明白,对不起。你能更具体地说明我应该如何实施吗?我应该说,我真的是新的这一切。 – user2526699

+0

我总是看到这种类型的问题,你应该阅读[PHP和MySQL的常用数据库调试](http://jason.pureconcepts.net/2013/04/common-debugging-php-mysql/)。 –

回答

1

首先使用PDO!检查您是否SELECT语句这里得到一些回报是怎么if (mysql_num_rows($result) == 0) { echo "No rows found, nothing to print so am exiting"; exit; }

+0

如果你不介意用我的代码显示我,我在哪里/如何用上面的代码运行此代码? – user2526699

+0

在定义varialbe'while语句检查,如果你得到任何结果全光照这个'如果(mysql_num_rows($广告)== 0)之前$ {ads'回声“找不到行,没什么可打印所以我退出”;出口; }' –

+0

继续前进,停止使用该脚本找PDO这里http://net.tutsplus.com/tutorials/php/php-database-access-are-you-doing-it-correctly/ –

0

你是不是在这里检查您的查询的返回值:

$ads = mysql_query("SELECT `advert_id1`, `title1`, `desc1`, `image1` FROM `sidead1` WHERE UNIX_TIMESTAMP() < `expires1` AND `shown1`=0 ORDER BY `advert_id1` ASC LIMIT 1"); 

我猜你有出现语法错误在UNIX_TIMESTAMP() < expires1``。你可以找出这样的:

if (($ads = mysql_query("...your query...")) == false) { 
    die("SQL Error:".mysql_error); 
} 

经常检查你查询的返回状态。

Oh - mysql已弃用。新项目使用mysqliPDO。和旧的!

+0

谢谢,我会把你的代码放在吗?对不起,正如我告诉他们,我是新来的,不知道该把它放在我的代码中。 – user2526699

+0

在查询中进行编辑后,将第四行($ ads = ...)替换为我发布的代码片段。你还有一个'UPDATE'查询,你应该查看返回状态。 – 2013-07-08 02:24:48

+0

我把你的代码,并得到这个错误SQL错误:mysql_error – user2526699

相关问题