所以我有这个代码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 = ...等等。
答案 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";
}