2013-03-05 114 views
0

我的查詢插入數據到記錄中,但它也顯示查詢失敗。它將記錄插入數據庫,但不是重定向到calander頁面,而是顯示查詢失敗。查詢死亡,但沒有工作

//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"); 
    } 
} 
+3

請停止使用'mysql_ *'函數,它們是舊的,並且棄用過程已經開始。替代方案可以查看** PDO **或** mysqli ** - 這些將爲社區提供更好的安全性和全面支持。我建議你首先刪除任何'@'符號來發現潛在的錯誤消息。 – 2013-03-05 17:36:37

+0

哪部分失敗?第一個「if($ result)」還是第二個?如果你不抑制來自'mysql_query'的錯誤,你可能會得到更多有用的信息。 – 2013-03-05 17:37:12

+0

你是否從'mysql_error()'得到任何錯誤? – 2013-03-05 17:37:48

回答

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'] . "'"; 
+0

謝謝MrCode它工作正常! – 2013-03-05 18:03:03

0

$result=mysql_query($qry); 

然後下一行:

if($result) { 

將導致else位正在使用即

die("Query failed"); 

SELECT語句,以便檢查錯誤。

0

你已經有了一個額外的點在你的第二個查詢:

               Here 
                   | 
                   | 
                   v 
WHERE user.login_id = customer.login_id AND customer.login_id= .'{$_SESSION['SESS_LOGIN_ID']}'."; 
0

一對夫婦的事情在這裏指出:

  • 你不應該使用mysql_*功能,因爲它們已被棄用。你應該看看使用mysqli或PDO
  • 對於你的第二個SELECT查詢沒有任何理由。您已經將所有信息插入表中。你唯一的新東西是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']}'.";

請注意,你的月經和單引號會:您可以通過簡單地調用mysql_insert_id()

  • 你原來的問題是,你likley得到一個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']}";