2013-07-08 91 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

相關問題