Php 使用if/else语句检查MySql计数结果
好的,这是我限制表单提交率的代码。当表单提交时,它使用时间戳和IP地址,然后在页面加载时,我有一个SQL语句,它使用用户IP,计算它在过去一个小时内在数据库中出现的次数,如果是2,则不会显示邮箱,否则,是的,问题是它不太有效,不管发生什么,它都会一直显示邮箱。代码如下:Php 使用if/else语句检查MySql计数结果,php,mysql,Php,Mysql,好的,这是我限制表单提交率的代码。当表单提交时,它使用时间戳和IP地址,然后在页面加载时,我有一个SQL语句,它使用用户IP,计算它在过去一个小时内在数据库中出现的次数,如果是2,则不会显示邮箱,否则,是的,问题是它不太有效,不管发生什么,它都会一直显示邮箱。代码如下: <?php $IP = $_SERVER['REMOTE_ADDR']; $sql = "select count(*) from mysql_table where ip='$IP' and timestamp >
<?php
$IP = $_SERVER['REMOTE_ADDR'];
$sql = "select count(*) from mysql_table where ip='$IP' and timestamp > (DATE_ADD(now(), INTERVAL -1 HOUR))";
$result = mysql_query($sql) or print mysql_error();
if ($result['count(*)'] == 2) {
die('You are out of posts this hour.');
}
else {
?>
<font style="position:relative; margin: 0 auto; top:15px; color:#fff; font-size:16px; font-family:Arial;">Note, once you have posted, it <b>CANNOT</b> be removed.</font>
<div id="postbox">
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<textarea id="postbox" name="postbox"></textarea><br />
<input type="checkbox" name="allowcommenting" value="1" id="commenting" CHECKED ><font style="margin-right:45px; font-family:Arial; font-size:18px; color:#fff; position:relative; top:15px;">Allow commenting?</font>
<?php
require_once 'math-security.php';
$math = new BasicMathSecurity( 'math' );
echo $math->getField();
?>
<input type="submit" name="submit" id="submit" value="Share" value="This cannot be undone." />
</form>
</div>
<?php
}
?>
在本例中,$result
尚未包含计数。必须首先从查询的结果集中获取结果行,然后才能进行比较
$sql = "select count(*) from mysql_table where ip='$IP' and timestamp > (DATE_ADD(now(), INTERVAL -1 HOUR))";
$result = mysql_query($sql) or print mysql_error();
if($row = mysql_fetch_row($result)) {
if ($row[0] == 2) {
die('You are out of posts this hour.');
}
}
在本例中,$result
尚未包含计数。必须首先从查询的结果集中获取结果行,然后才能进行比较
$sql = "select count(*) from mysql_table where ip='$IP' and timestamp > (DATE_ADD(now(), INTERVAL -1 HOUR))";
$result = mysql_query($sql) or print mysql_error();
if($row = mysql_fetch_row($result)) {
if ($row[0] == 2) {
die('You are out of posts this hour.');
}
}
使用mysql\u fetch\u assoc($result)
或mysql\u fetch\u array($result)
以下是一个例子:
$query = 'SELECT count(*) FROM '.$table;
$result = mysql_query($query);
$res = mysql_fetch_array($result);
echo "Count - ".$res[0];exit;
使用mysql\u fetch\u assoc($result)
或mysql\u fetch\u array($result)
以下是一个例子:
$query = 'SELECT count(*) FROM '.$table;
$result = mysql_query($query);
$res = mysql_fetch_array($result);
echo "Count - ".$res[0];exit;
这就需要进行基本的调试。IP在数据库中吗?查询是否会产生任何结果?顺便说一句,在将$IP
放入数据库之前,您应该对其进行清理,即使输入IP后很可能会伪造远程地址。我现在检查查询。$result['count(*')]
?这是什么?另外,您确定要使用die()
?当我让它工作时,die是临时的。。。$result['count(*)']是它出现的次数,我想这需要进行基本的调试。IP在数据库中吗?查询是否会产生任何结果?顺便说一句,在将$IP
放入数据库之前,您应该对其进行清理,即使输入IP后很可能会伪造远程地址。我现在检查查询。$result['count(*')]
?这是什么?另外,您确定要使用die()
?当我让它工作时,die是临时的。。。$result['count(*')]是它出现的次数,我想。这会返回一个错误,(!)警告:mysql_fetch_row()希望参数1是资源,布尔值在C:\wamp\www\anonpost\index.php的第453行中给出。这会返回一个错误,(!)警告:mysql_fetch_row()希望参数1是资源,第453行C:\wamp\www\anonpost\index.php中给出的布尔值