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())より良いでしょう-これはエラーログに書き込みます。この MySQL ライブラリは推奨されておらず、推奨されていないため、PDOまたはMySQLiへのアップグレードも検討してください。

于 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_*関数は非推奨であるため、使用しないでください。代わりにmysqliまたはPDOを使用してください。

于 2013-01-04T14:50:58.400 に答える
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
$count=mysql_num_rows($result);
or die mysql_error();

する必要があります

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

mysql_*の使用は推奨されていないため、使用を避けることをお勧めします。代わりにmysqliまたはPDOを使用してください。

于 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

このコードは機能します。エラーの原因となった「または死ぬ」前のセミコロン(;)を削除しました..

$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 に答える