我有一个MySQL + PHP Error类型的东西

时间:2014-03-12 23:58:16

标签: mysql

所以,我是所有这些PHP和MySQL以及动态编码和新东西的新手。 所以我感谢一些帮助,无论如何让我们陷入错误。 我收到这个错误:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/a3047131/public_html/core/inc/ipban.inc.php on line 6

以下是代码:

`<?php
 // Check if user is banned
 function check_banned($ip) {
    $query = mysql_query("SELECT ip FROM Index WHERE ip='$ip'");
    if(mysql_num_rows($query) != 0) {
        die("This ip <b>$ip</b> has been banned from this website!");
    } else {
        return false;
    }
 }
?>  `

非常感谢你们!我很感谢支持,这真棒! 真的很感激,错误现在已经解决了,感谢您帮助我,感谢所有的回复! :)谢谢。

3 个答案:

答案 0 :(得分:0)

如果您要查看documentation

  1. 不推荐使用mysqli / pdo。

  2. $query = sprintf("SELECT `ip` FROM `Index` WHERE `ip`='%s'",
        mysql_real_escape_string($ip));
    
    $result = mysql_query($query);
    
    // This shows the actual query sent to MySQL, and the error. Useful for debugging.
    if (!$result) {
        $message  = 'Invalid query: ' . mysql_error() . "\n";
        $message .= 'Whole query: ' . $query;
        die($message);
    }
    
    $row = mysql_num_rows($result);
    
    // check if it exists
    if ($row > 0) {
        die("This ip <b>$ip</b> has been banned from this website!");
    } else {
        return false;
    }
    

答案 1 :(得分:0)

您使用的是表名index。这个名字由mysql保留。这意味着它由mysql自己使用,如SELECT

要解决此问题,您有两种方法:

  • 重命名您的表名
  • 使用反引号

使用反引号,您的查询将如下所示:

SELECT ip FROM `Index` WHERE ip='$ip'

另外请看一下这个页面,它确实列出了我的mysql保留的所有关键字。 http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html

答案 2 :(得分:-1)

你应该这样做:

function check_banned($ip) { 
 $banned = mysql_result(mysql_query("SELECT ip FROM `Index` WHERE ip='$ip'"));

 if($banned)
  die("This ip <b>$ip</b> has been banned from this website!");

 return false;
}
    如果没有匹配的记录,
  1. mysql_result()将返回false
  2. 如果您特别想要抛出异常,只使用die()
  3. 摆脱无用的......别的逻辑