1

php と mysql でまた問題が発生しています。テーブル users を使用してデータベースをセットアップしていて、etc を作成したいのSELECT COUNT(*) FROM users WHERE {value1} {value2}ですが、問題は、比較したい 3 つのフィールドがテーブル内で順番に並んでおらず、SELECT クエリを実行すると結果が vairable($結果) が正しく返されません (!$result)。それらの間にフィールドがあるmysqlテーブルの複数のフィールドをチェックする方法はありますか? これが私が達成したいことの例です: users と呼ばれる mysql テーブルには、次のフィールドが含まれています: a,b,c,d,e,f,g,h,i,j,k,l and m. SELECT COUNT(*) FROMユーザーを作成したいのですWHERE a='$_SESSION[user]' and d='$_SESSION[actcode]' and j='$_SESSION[email]'が、引用符で囲まれたステートメントは私のクエリであり、常に実行されますif (!$result) { error("An error has occurred in processing your request.");}声明。私は何を間違っていますか?それどころか、フィールドを 1 つだけ使用してステートメントを実行しようとすると、コードは正常に動作します。これは私には解決できない厄介な問題です。以下のコードを投稿しました。また、エラー関数は私が作成したカスタム関数であり、完全に正常に機能していることにも注意してください。

<?php
include "includefunctions.php";
$result = dbConnect("program");
if (!$result){
    error("The database is unable to process your request at this time. Please try again later.");

} else {

ob_start();
session_start();
if (empty($_SESSION['user']) or empty($_SESSION['password']) or empty($_SESSION['activationcode']) or empty($_SESSION['email'])){
    error("This information is either corrupted or was not submited through the proper protocol. Please check the link and try again!");
} elseif ($_SESSION['password'] != "password"){
     error("This information is either corrupted or was not submited through the proper protocol. Please check the link and try again!");
} else {

    $sql = "SELECT * FROM `users` WHERE `username`='$_SESSION[user]' and `activationcode`='$_SESSION[activationcode]' and `email`='$_SESSION[email]'";/*DOES NOT MATTER WHAT ORDER THESE ARE IN, IT STILL DOES NOT WORK!*/
    $result = mysql_query($sql);
    if (!$result) {
        error("A database error has occurred in processing your request. Please try again in a few moments.");/*THIS IS THE ERROR THAT WONT GO AWAY!*/
    } elseif (mysql_result($result,0,0)==1){/*MUST EQUAL 1 OR ACCOUNT IS INVALID!*/
        echo "Acount activated!";
    } else {
            error("Account not activated.");    
    }
}
}
ob_end_flush();
session_destroy();
?>
4

2 に答える 2

0

セッション値を別の変数に保存してからクエリを作成します。適切に機能すると思います

$usr=$_SESSION['user'];
$acod=$_SESSION['activationcode'];
$eml=$_SESSION['email'];
$sql = "SELECT * FROM `users` WHERE `username`='$usr' and `activationcode`='$acod' and `email`='$eml'"; 
$result = mysql_query($sql) or die(mysql_error());
于 2013-06-28T05:29:38.687 に答える