1

IF ステートメント内で WHERE 句を使用できますか?

私はこのようなものが欲しいように:

     $SQL = mysql_query("SELECT * FROM `table` ORDER BY `row` DESC");
     $rows = mysql_fetch_array($SQL);
     $email = $_SESSION['email_of_user'];

        if($rows["row"] == "1" WHERE `row`='$email' : ?> (Pulls the logged in user's email)
        Edit Server
        <?php  else : ?>
        Add Server
        <?php endif; ?>

(" は必要ですか? WHERE ステートメントはどこにあるのでしょうか?

または、where 句内の if 条件で実行できますか? これらすべての用語についてはまだよくわからないので、間違っていたら訂正してください...

4

1 に答える 1

2

クエリステートメントとPHPのステートメントを混同することはできません。代わりに、目的の結果を抽出するクエリを作成し、そのクエリから行があるかどうかを確認します。

例を示します。

$query = "SELECT * FROM `TABLE_NAME` WHERE `field` = '1' && `email`='$email'"; //Create similar query
$result = mysqli_query($query, $link); //Query the server
if(mysqli_num_rows($result)) { //Check if there are rows
    $authenticated = true; //if there is, set a boolean variable to denote the authentication
}

//Then do what you want
if($authenticated) {
     echo "Edit Server";
} else {
     echo "Add Server";
}

アーロンは私の例で安全なコードを奨励するためにそのような努力を示したので。これを安全に行う方法は次のとおりです。PDOライブラリには、パラメータを安全な方法でクエリステートメントにバインドするためのオプションが用意されています。だから、これがそれを行う方法です。

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); //Create the connection

//Create the Query Statemetn
$sth = $dbh->prepare('SELECT * FROM `TABLE_NAME` WHERE field = :field AND email = :email');

//Binds Parameters in the safe way
$sth -> bindParam(':field', 1, PDO::PARAM_INT);
$sth -> bindParam(':email', $email, PDO::PARAM_STRING);

//Then Execute the statement
$sth->execute();

$result = $sth->fetchAll(); //This returns the result set as an associative array
于 2012-12-19T02:21:00.503 に答える