用于ip的PHP检查数组,在sql数据库中?

时间:2014-01-02 19:14:13

标签: php mysql sql post ip

所以我有这个代码here(来自phpacademy)我用来手动添加试图访问我的论坛的垃圾邮件机器人的ips。然后,我有这个代码,将阻止ips访问我的页面,因为它需要"在标题中。

<?php
 $deny = array("1.1.1.9", "9.9.9.9", "333.333.333");
 if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
     header("location: http://www.google.com/");
     exit();
 } 
?>

我想要的是该数组要查找我的sql表&#34; first_name&#34;(我懒得把名字改为ip)。我(你可以告诉:)新的php和mysql,我确定这是一个简单的事情,有人会给我一个链接到包含如何做的页面...

EDIT1: 我正在尝试这段代码:

mysql_connect("localhost", "mydatabase", "mydatabasespassword") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());
$ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$query = "SELECT * FROM first_name WHERE first_name='$ip'";
$result = mysql_query($query);

if (mysql_num_rows($result) > 0) {
  echo "Ip is already in database";
} else { 
  echo "Ip is not in database";
}

但是我得到&#34;警告:mysql_num_rows()期望参数1是资源,第8行的/path/7.php中给出布尔值 Ip不在数据库&#34;

EDIT2: 修好了,我正在做SELECT * FROM fieldinsteadoftable where field = ...等等。

1 个答案:

答案 0 :(得分:1)

从长远来看,一点点错误检查会对您有所帮助。试试看你的数据库是否给你任何错误。

mysql_query的$ result返回可能是&#39; false&#39;因为查询字符串中存在错误或数据库表引用不匹配。因为你没有给mysql_num_rows一个资源,所以它正在抛出错误。在继续之前,您需要检查$ result是否有错误。

注意:为了说明这一点,不推荐使用mysql_函数,你需要远离它们。请参阅PHP文档http://us3.php.net/manual/en/function.mysql-query.php

mysql_connect("localhost", "mydatabase", "mydatabasespassword") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());
$ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$query = "SELECT * FROM first_name WHERE first_name='$ip'";
$result = mysql_query($query);

// ADD ERROR CHECKING HERE
if (!$result) {
    var_dump(mysql_error());
    return;
}

if (mysql_num_rows($result) > 0) {
  echo "Ip is already in database";
} else { 
  echo "Ip is not in database";
}