0

エラーは次のとおりです。

警告: mysql_num_rows() は、パラメーター 1 がリソースであると想定します。null は、36 行目の /home/rspslabe/public_html/Toplist/index.php で指定されます。

これはコードです:

<?

    $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;

実際の Web ページ自体は次のとおりです: http://rspslab.com/Toplist/

誰かが助けてくれたらありがとう!:)

4

1 に答える 1

1

を見て<?、これが完全なコードだと思います。これが完全なコードである場合... データベースへの接続を忘れています。

mysql の次のコードを使用して、データベースに接続できます。

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

ただし、このサイトの赤で示されているように、mysql は古いため、新しいプロジェクトでは使用しないでください。代わりに、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文字列で、エスケープする必要がある文字列です。

于 2013-02-21T00:02:14.360 に答える