2013-03-05 4 views
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"); 
    } 
} 
+3

Остановите использование функций 'mysql_ *', они старые и начался процесс устаревания. Для альтернатив изучите ** PDO ** или ** mysqli ** - это обеспечит лучшую безопасность и полную поддержку сообщества. Я предлагаю вам начать с удаления любых символов '@', чтобы выявить основные сообщения об ошибках. –

+0

Какая часть неисправности? Первый 'if ($ result)' или второй? Вы можете получить более полезную информацию, если вы не подавите ошибки из 'mysql_query'. –

+0

Получаете ли вы какие-либо ошибки из 'mysql_error()'? –

ответ

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, он отлично работает !! –

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, который я предполагаю, является полем автоинкремента. Вы можете получить это после первого запроса, просто вызывая 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']}'.";

Обратите внимание, что периоды и одиночные кавычки собираются буквально включаться в строку. Вы должны использовать:

$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']}"; 
Смежные вопросы