0

私のクエリはデータをレコードに挿入しますが、クエリが失敗したことも表示します。レコードをデータベースに挿入しますが、予定表ページにリダイレクトする代わりに、クエリが失敗したことを表示します。

//Create INSERT query
$qry = "INSERT INTO `customer`(`login_id`,`firstname`, `lastname`, `ad1`, `ad2`, `ad3`, `postcode`, `phone`, `email`) VALUES ('{$_SESSION['SESS_LOGIN_ID']}','{$_SESSION['SESS_FIRST_NAME']}','{$_SESSION['SESS_LAST_NAME']}', '$ad1', '$ad2', '$ad3', '$postcode', '$phone', '{$_SESSION['email']}');";   
$result = @mysql_query($qry);

//Check whether the query was successful or not
if($result) {
    //Create query
    $qry="SELECT user.login_id, customer.customer_id, customer.email FROM user, customer
    WHERE user.login_id = customer.login_id  AND customer.login_id= .'{$_SESSION['SESS_LOGIN_ID']}'.";
    $result=mysql_query($qry);

    //Check whether the query was successful or not
    if($result) {
        if(mysql_num_rows($result) == 1) {

            //Login Successful
            session_regenerate_id();
            $login = mysql_fetch_assoc($result);
            $_SESSION['SESS_CUSTOMER_ID']= $login['customer_id'];
            $_SESSION['SESS_CUSTOMER_EMAIL']= $login['email'];
            session_write_close();

            header("location: calendar.php");
            exit();
        }
    } else {
        die("Query failed");
    }
}
4

4 に答える 4

1

INSERTクエリは成功しますが、構文エラーがあるため、後続のSELECTは失敗します。文字列で構文を使用する{}場合は、連結文字を使用しないでください.

への変更

$qry="SELECT user.login_id, customer.customer_id, customer.email FROM user, customer WHERE user.login_id = customer.login_id  AND customer.login_id= '{$_SESSION['SESS_LOGIN_ID']}'";

{}または、構文なしで連結します。

$qry="SELECT user.login_id, customer.customer_id, customer.email FROM user, customer WHERE user.login_id = customer.login_id  AND customer.login_id= '" . $_SESSION['SESS_LOGIN_ID'] . "'";
于 2013-03-05T17:38:19.253 に答える
0

ここで指摘すべきことがいくつかあります。

  • mysql_*関数は非推奨であるため、使用しないでください。mysqliまたはPDOの使用を検討する必要があります
  • 2番目のSELECTクエリにはまったく理由がありません。すでにすべての情報をテーブルに挿入しました。新しいのはlogin_idだけです。これは、自動インクリメントフィールドであると想定しています。これは、最初のクエリの後に呼び出すだけで取得できますmysql_insert_id()
  • 元々の問題は、ここでSQL構文エラーが発生することです。

$qry="SELECT user.login_id, customer.customer_id, customer.email FROM user, customer WHERE user.login_id = customer.login_id AND customer.login_id= .'{$_SESSION['SESS_LOGIN_ID']}'.";

ピリオドと一重引用符は文字列に文字通り含まれることに注意してください。次を使用する必要があります。

$qry="SELECT user.login_id, customer.customer_id, customer.email FROM user, customer
   WHERE user.login_id = customer.login_id  AND customer.login_id = {$_SESSION['SESS_LOGIN_ID']}";
于 2013-03-05T17:41:49.397 に答える
0

このクエリが失敗した場合:

$result=mysql_query($qry);

次に次の行:

if($result) {

else使用されるビットになります。

die("Query failed");

SELECTしたがって、ステートメントのエラーを確認してください。

于 2013-03-05T17:38:32.810 に答える
0

2 番目のクエリに余分なドットがあります。

                                                             Here
                                                                |
                                                                |
                                                                v
WHERE user.login_id = customer.login_id  AND customer.login_id= .'{$_SESSION['SESS_LOGIN_ID']}'.";
于 2013-03-05T17:39:22.807 に答える