2013-02-20 80 views
0

繼承人的錯誤:我不斷收到同樣的錯誤消息,並且無法修復它

Warning: mysql_num_rows() expects parameter 1 to be resource, null given in /home/rspslabe/public_html/Toplist/index.php on line 36

這是代碼:

<? 

    $maxdate = time() - ($MaxDays * 86400); 

    if ($p == 0) 
    { 
     $site_info = mysql_query("SELECT 
$Members.title AS title, $Members.url AS url, count(*) AS hits, 
avg($IPLogg.vote) AS avrating, 
$Members.siteid AS id FROM 
$IPLogg,$Members WHERE $Members.siteid = $IPLogg.siteid AND $IPLogg.time > '$maxdate' 
GROUP BY $Members.siteid ORDER BY hits DESC, avrating DESC"); 
    } 
    else if ($p == 1) 
    { 
     $site_info = mysql_query("SELECT 
$Members.title AS title, $Members.url AS url, count(*) AS hits, 
avg($IPLogg.vote) AS avrating, 
$Members.siteid AS id FROM 
$IPLogg,$Members WHERE $Members.siteid = $IPLogg.siteid AND $IPLogg.time > '$maxdate' 
GROUP BY $Members.siteid ORDER BY avrating DESC, hits DESC"); 
    } 

    $site_num = mysql_num_rows($site_info); 
    if ($f == "") 
     $f = 0; 
    $maxsites = $f + $TopListSize; 

    if ($site_num > $maxsites) 
     $site_num = $maxsites; 

    $i = $f; 

實際網頁自身是這樣的:http://rspslab.com/Toplist/

如果有人可以幫忙,謝謝! :)

+1

'ext/mysql'已過時,不再維護。它將被標記爲已棄用PHP5.5。使用'PDO_MYSQL'或'MySQLi'。 http://php.net/en/mysql-connect – KingCrunch 2013-02-20 23:36:36

+0

你在哪裏設置$ p?如果它不存在/不等於0或1,那麼這些查詢都不會運行。另外,你不應該像這樣在查詢中嵌入參數。讓你打開SQL注入 - http://php.net/manual/en/security.database.sql-injection.php – Pete 2013-02-20 23:39:19

+0

一個這樣的例子可能會有所幫助:P這是我過去兩年編碼的過程。 – 2013-02-20 23:41:46

回答

1

看到<?,我假設這是完整的代碼。如果這是完整的代碼...您忘記連接到您的數據庫。

您可以通過使用此代碼爲MySQL連接到數據庫:但是

$link = mysql_connect('hostname/ipaddress', 'mysql_user', 'mysql_password'); 

請記住,MySQL的是過時的,不應該在新的項目中使用,作爲This site.所示的紅色相反,我建議使用mysqli(mysql改進)。

要與你的代碼中使用mysqli的,你可以試試這個:

$maxdate = time() - ($MaxDays * 86400); 
// CONNECT TO THE DATABASE 
    $DB_NAME = 'DATABASE_NAME'; 
    $DB_HOST = 'DATABASE_HOST'; 
    $DB_USER = 'DATABASE_USER'; 
    $DB_PASS = 'DATABASE_PASSWORD'; 

    $mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 

    if (mysqli_connect_errno()) { 
     printf("Connect failed: %s\n", mysqli_connect_error()); 
     exit(); 
    } 

    if ($p == 0){ 
    $query = "SELECT 
$Members.title AS title, $Members.url AS url, count(*) AS hits, 
avg($IPLogg.vote) AS avrating, 
$Members.siteid AS id FROM 
$IPLogg,$Members WHERE $Members.siteid = $IPLogg.siteid AND $IPLogg.time > '$maxdate' 
GROUP BY $Members.siteid ORDER BY hits DESC, avrating DESC"; 

else if ($p == 1){ 
      $query = "SELECT 
    $Members.title AS title, $Members.url AS url, count(*) AS hits, 
    avg($IPLogg.vote) AS avrating, 
    $Members.siteid AS id FROM 
    $IPLogg,$Members WHERE $Members.siteid = $IPLogg.siteid AND $IPLogg.time > '$maxdate' 
    GROUP BY $Members.siteid ORDER BY avrating DESC, hits DESC"; 
} 
else{ die("P isn't set?");} 

    $result = $mysqli->query($query) or die($mysqli->error.__LINE__); 
$maxsites = $f + $TopListSize; 
    if($result->num_rows > $maxsites) { 
     $site_num = $maxsites; 
    } 
echo $site_num; 

// CLOSE CONNECTION 
    mysqli_close($mysqli); 

請注意,您必須使用「mysqli_real_escape_string」上插入查詢任何字符串。這樣做的:

$myescapedstring = $mysqli->real_escape_string($myunescapedstring); 

哪裏$myescapedstring插入查詢字符串,$myunescapedstring是需要轉義的字符串。

相關問題