-1

私はそれに慣れていないので、PHP の if ステートメントについて少し助けが必要です。

まず、次のクエリがあります。

$sqlCmd = "SELECT user.name,user.level 
    FROM user.user 
    WHERE user.id = '".$_GET['char']."' 
    LIMIT 1";

そして今、私はこの2番目のクエリを持っています

visible $sqlUpdate = "UPDATE user.user 
    SET level='1' 
    WHERE id='".$_GET['char']."' 
    LIMIT 1";

私がやりたいことは次のようなものです:if level>1を実行し$sqlUpdate、そうでなければエラーを出力します。

4

6 に答える 6

1

このようにしてみてください

visible $sqlUpdate = "UPDATE user.user 
                      SET level='1' 
                      WHERE id='".mysql_real_escape_string($_GET['char'])."' 
                      AND level >1 
                      LIMIT 1";

http://sqlzoo.net/http://beginner-sql-tutorial.com/sql.htmの学習に役立つこのリンクを参照して ください

于 2013-03-21T04:18:18.667 に答える
1
visible $sqlUpdate = "UPDATE user.user SET level='1' WHERE id='".mysql_real_escape_string($_GET['char'])."' AND level >1 LIMIT 1";

あなたのコードはSQLインジェクションに対して脆弱です。すべてのリクエストを適切にエスケープする必要があります


警告

あなたのコードはSQLインジェクションgetに対して脆弱です。すべてをエスケープする必要がありますpostrequestより良いアプローチはPreparedステートメントを使用することです

よく読んだ

  1. PHPでSQLインジェクションを防ぐには?
  2. SQL インジェクションを防ぐには、PDO 準備済みステートメントで十分ですか?

ノート

  1. ext/mysqlプレフィックス mysql_ で名前が付けられたすべての関数を提供する PHP 拡張機能全体は、PHP v5.5.0 で正式に非推奨となり、将来的に削除される予定です。したがって、またはのいずれPDOかを使用しますMySQLi

よく読んだ

  1. mysql 拡張機能は非推奨であり、将来削除される予定です。代わりに mysqli または PDO を使用してください
  2. MySQL 開発者向け PDO チュートリアル
  3. 初心者向け Pdo チュートリアル
于 2013-03-21T04:18:53.990 に答える
0
$sqlCmd = "SELECT user.name,user.level FROM user.user WHERE user.id = '".$_GET['char']."' AND level>1 LIMIT 1";
if(mysql_num_rows($mysql_con)===1){
//run second query
}else{echo'error:'}
于 2013-03-21T04:21:13.840 に答える
0

これでいいと思いますが…

$result = mysql_query($sqlCmd);
if($row = mysql_fetch_object($result)) {
    if ($row->level > 1)
    {
      mysql_query($sqlUpdate);
      //Might want to add a check here if it was successful... 
      echo "Done";
    }
    else
      echo 'error!!!';

}
mysql_free_result($result);
于 2013-03-21T04:21:55.807 に答える
0

これを試して

$sqlCmd = "SELECT user.name,user.level 
FROM user.user 
WHERE user.id = '".$_GET['char']."' 
LIMIT 1";

$resource = mysql_query($sqlCmd);
$temp_arr = mysql_fetch_assoc($resource);
$level    = $temp_arr['level'];
if($level > 1)
{
    $sqlUpdate = "UPDATE user.user 
    SET level='1' 
    WHERE id='".mysql_real_escape_string($_GET['char'])."' 
    LIMIT 1";

    mysql_query($sqlUpdate);
 }
于 2013-03-21T04:34:33.247 に答える
-1
    mysql_query("UPDATE user.user SET level='1' WHERE id='".$_GET['char']."' and level>1 LIMIT 1");
于 2013-03-21T04:20:03.810 に答える