2013-02-20 66 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是需要转义的字符串。

相关问题