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

如果此查询失败:

$result=mysql_query($qry);

然后是下一行:

if($result) {

将导致该else位被使用,即

die("Query failed");

因此,请检查您的SELECT陈述中的错误。

于 2013-03-05T17:38:32.810 回答
0

您的第二个查询中有一个额外的点:

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

这里需要指出几点:

  • 您不应该使用mysql_*已弃用的函数。你应该看看使用 mysqli 或 PDO
  • 您的第二个 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 回答