0

我似乎在这段代码上遇到了困难,我不明白,因为在我的家庭服务器上,它 100% 完美。基本上,这个脚本获取用户 ip 并将其存储到 mysql 表中。每次用户发布时,它都会检查表格以查看 IP 是否已经发布。当我在出现问题的 num_rows 上运行 mysql_error() 时,我得到:

Parse error: syntax error, unexpected T_LOGICAL_OR on line 119

有任何想法吗?

php:

$poster_ip=$_SERVER['REMOTE_ADDR'];//Posters ip
//check for ip double posting
//selecet ip from table
$sql="SELECT * FROM $tbl_name WHERE ip='$poster_ip'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
or die mysql_error();//line 119
//if result matche posterip, table row must be 1
if($count==1){
//ip taken
echo "This IP has already submited a post. You may not submit another.";
exit();
//else script continues
}
4

7 回答 7

14

删除分号,因为它会终止语句并将or die视为新语句,从而导致错误:

$count=mysql_num_rows($result) or die(mysql_error());
                         //   ^ no semicolon

die()您还需要在呼叫周围加上括号。

旁注:or die(mysql_error())不被认为是好的做法,因为在开发和生产环境之间很难维护。or trigger_error(mysql_error())会更好 - 这会写入您的错误日志。还可以考虑升级到PDOMySQLi,因为这个 MySQL 库已被弃用和劝阻。

于 2013-01-04T14:49:35.813 回答
1

去掉分号!

$count=mysql_num_rows($result);
------------------------------^
or die mysql_error();//line 119

将其更改为:

$count=mysql_num_rows($result) or die mysql_error();

它终止了!!!

建议:

不要使用mysql_*已弃用的函数。请改用mysqliPDO

于 2013-01-04T14:50:58.400 回答
0
$count=mysql_num_rows($result);
or die mysql_error();

应该

$count=mysql_num_rows($result) or die mysql_error();

任何,我建议您避免使用它们,mysql_*因为它们已被弃用。请改用mysqliPDO

于 2013-01-04T14:50:22.880 回答
0

尝试改变这个:

$count=mysql_num_rows($result);
or die mysql_error();//line 119

对此:

$count=mysql_num_rows($result) or die mysql_error();//line 119
于 2013-01-04T14:50:51.823 回答
0

请删除分号添加()来死以表明它是错误的然后死

$count=mysql_num_rows($result) or die(mysql_error()); //line 119
于 2013-01-04T14:54:58.367 回答
0

您不能以“或”开头的行在第 118 行中,您以“;”结尾

$count = mysql_num_rows($result) or die mysql_error();

但是最好在结果后进行错误检查:

if(!$result) {
    die mysql_error();        
}
于 2013-01-04T14:55:57.733 回答
0

此代码将起作用。我在导致错误的“或死”之前删除了分号(;)。

$poster_ip=$_SERVER['REMOTE_ADDR'];//Posters ip
//check for ip double posting
//selecet ip from table
$sql="SELECT * FROM $tbl_name WHERE ip='$poster_ip'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result) or die mysql_error();//line 119
//if result matche posterip, table row must be 1
if($count==1){
//ip taken
echo "This IP has already submited a post. You may not submit another.";
exit();
//else script continues
}
于 2013-01-04T15:02:45.347 回答