我目前正在尝试用PHP和MYSQL创建一个IP-BAN系统,但是我对MySQL语法不是很熟悉。这是我到目前为止的代码,它返回最后一个代码"呃-哦"。 法典:
<?php
$ip = '127.0.0.1';
mysql_connect('127.0.0.1', 'user', 'pass');
mysql_select_db('IP');
if(mysql_query("SELECT IP FROM IP WHERE IP='127.0.0.1'") == 1){
echo "If you get this, it may or may not be working";
}
elseif(mysql_query("SELECT IP FROM IP WHERE IP='127.0.0.1'") == FALSE){
echo "If you get this, it means that your IP was not found in the database";
}
else{
echo "Uh-oh!";
}
我的 SQL 数据库名称是 IP,表名称是 IP,字段是 IP 和 ban。
我如何让这段代码告诉我给定的 IP 是否在表中?
如果查询失败并出现语法错误,mysql_query()
将返回FALSE
,但如果找不到该值,则不会返回FALSE
。 相反,这两种情况都将返回结果资源。 必须检查 mysql_num_rows()
的值以确定是否返回了行。
// Do the query and test for errors:
$result = mysql_query("SELECT IP FROM IP WHERE IP='127.0.0.1'");
if (!$result ) {
// Query error
echo mysql_error();
}
// Query was successful - test if any rows were found
else {
if (mysql_num_rows($result) > 0) {
//the IP was found
}
else {
// the IP was NOT found (num rows === 0)
}
}
免责 声明:
现在,关于知识产权禁止的做法...通常不建议这样做。 学校或企业网络,或ISP的NAT后面的任何人(如许多移动网络)在许多用户(甚至数千个)之间共享一个公共IP。 您无法通过 IP 地址可靠地识别单个用户,更糟糕的是,您可能会阻止合法用户使用您的 Web 应用程序。
最后,关于mysql_*()
函数本身。 PHP 开发社区已经开始计划弃用这些旧函数,因为它们不能很好地鼓励安全编码实践。 相反,我(以及这里的大多数人)建议熟悉使用预准备语句的现代 API。 我更喜欢PDO,但MySQLi也是一种选择。
如果
成功,mysql_query() 将返回资源。使用此页面上的示例:
http://us.php.net/manual/en/mysqli.query.php