1

私は現在mysqliに慣れてきており、mysqlで書いたコードを変換しようとしています。私は手続き型スタイルを使用してコードを変換していますが、mysqli では、mysqli_real_escape_string を使用するのではなく、準備済みステートメントを使用できることに気付きました。これらの準備されたステートメントを理解しようとしましたが、理解できません。以下のコードを準備済みステートメントに変換するにはどうすればよいですか?

function user_exists($email){ 
$query = mysqli_query($GLOBALS["___mysqli_ston"], "SELECT `mem_id` FROM `members` WHERE `mem_email`='$email'"); 
$query_result = mysqli_num_rows($query); 
return $query_result; 
}
4

1 に答える 1

2
function user_exists($email){ 
    $stmt = mysqli_prepare($GLOBALS["___mysqli_ston"], "SELECT `mem_id` FROM `members` WHERE `mem_email`=?"); 
    mysqli_stmt_bind_param($stmt,"s",$email);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_store_result($stmt);
    $query_result=mysqli_stmt_num_rows($stmt);
    mysqli_stmt_free_result($stmt);
    return $query_result; 
}

真剣に、OOPスタイルを使用する方が良いでしょう...

function user_exists($email){ 
    global $___mysqli_ston;//just follow your style
    $stmt = $___mysqli_ston->prepare("SELECT `mem_id` FROM `members` WHERE `mem_email`=?");
    $stmt->bind_param("s",$email);
    $stmt->execute();
    $stmt->store_result();
    $query_result=$stmt->num_rows;
    $stmt->free_result();
    return $query_result; 
}
于 2013-04-03T11:27:04.287 に答える