2014-03-12 16 views
0

所以,我是新来的所有这PHP和MySQL和动态编码和东西..所以,我会感谢一些帮助,反正让我们进入错误。 我得到这个错误:我有一个MySQL + PHP错误类型的东西

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; 
    } 
} 
?> ` 

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

+0

您好@ user3413045,请删除该评论并将其编辑为您的问题 - 您也可以使用“代码”按钮进行格式化。标签栏下方有一个编辑按钮。谢谢。 – halfer

+0

index是保留关键字,使用反引号或使用更好的列名称。 –

回答

-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. 仅使用模具()如果您特别想抛出一个异常
  3. 摆脱没用......其他逻辑
+0

对不起,但我不明白这段代码.. 我已复制并过时,但现在它显示我一个不同的错误..:/ – user3413045

+0

我们不是上帝,请给我们提供错误。 –

+0

再次看着你原来的错误,这看起来像一个类的一部分,所以你可能会抛出一个异常,再试一次。如果错误改变了,这段代码可能正在工作。 – Mazzy

0

如果你会检查documentation

  1. 它被弃用切换到mysqli/pdo。

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

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

为了解决这个问题,你有2种方式:

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

使用反引号您的查询将是这样的:

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

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

相关问题