2

ユーザー名とパスワードの入力に対してデータベースが一致するかどうかをチェックするクエリがあります。このクエリの対応する値は、0(一致なし)または1(一致)のいずれかになります。これは、1または0のいずれかの値を持つ列(itDoesExist)に出力されます。

私が知りたいのは、PHPでその値を取得するにはどうすればよいですか?私はここで何かが欠けていると思います、そして私はそれが何であるかを完全に理解することができないようです。

コードは次のとおりです。

$stmt = $link->prepare("
    SELECT CASE WHEN
    EXISTS (

    SELECT 1
    FROM user_details
    INNER JOIN user_info 
        ON user_details.id = user_info.id
    WHERE user_info.emailContact = ?
    AND user_details.password = ?
    )
    OR EXISTS (

    SELECT 1
    FROM user_details
    INNER JOIN user_business_info 
        ON user_details.id = user_business_info.id
    WHERE user_business_info.emailContact = ?
    AND user_details.password = ?
    )
    THEN 1
    ELSE 0
    END AS itDoesExist
");

if (!$stmt)
{
    $error = "{$link->errno}  :  {$link->error} (Error Searching For User)";
    include "C:/wamp/www/includes/html/main/error.html.php";
    exit();
}
if (!$stmt->bind_param("ssss", $username, $password, $username, $password))
{
    $error = "{$stmt->errno}  :  {$stmt->error}";
    include "C:/wamp/www/includes/html/main/error.html.php";
    exit();
}
if (!$stmt->execute())
{
    $error = "{$stmt->errno}  :  {$stmt->error} (Cant execute?)";
    include "C:/wamp/www/includes/html/main/error.html.php";
    exit();
}

この点に関するヘルプや情報を事前に感謝します!

4

1 に答える 1

1

使用できるクエリの結果を探している場合は、 prepareステートメントの例を参照してbind_resultください。fetch

$stmt->bind_result($itDoesExist);
$stmt->fetch();

if ($itDoesExist == 1)
{
    /* Handle the exists case */
}
于 2012-07-06T20:01:31.390 に答える