2016-05-13 2 views
1

проблему is..i попытаться разбора JSON из php..here является JQuery код:MySQL запрос вставить успех, но вернуть ложную

$.post("confirmsignup.php", $("#signupform").serialize()).always(function(data) { 
    alert(data.msg); 
}, "json"); 

PHP код:

if (isset($_POST['gender'])&&isset($_POST['fname'])&&isset($_POST['sname'])&&isset($_POST['username'])&&isset($_POST['dob'])) { 
    $gender=secureing($_POST['gender']); 
    $fname=secureing($_POST['fname']); 
    $sname=secureing($_POST['sname']); 
    $username=secureing($_POST['username']); 
    $email=secureing($_POST['email']); 
    $dob=secureing($_POST['dob']); 
    if (isset($_POST['agree'])&&isset($_POST['pass'])&&isset($_POST['repass'])) { 
     $pass=secureing($_POST['pass']); 
     if ($_POST['pass']==secureing($_POST['repass'])) { 
      $query = "INSERT INTO users VALUES('$username', '$gender', '$fname', '$sname', '$email', '".md5($pass)."', '$dob')"; 
      if(!($query_run = mysql_query($query))){ 
       $msg = "error"; 
      }else{ 
       $msg = "complete"; 
      } 
     } 
    } 
} 
header('Content-Type: application/json'); 
?> 
{ 
"msg": "<?php echo $msg ." - ". $query; ?>" 
} 

secureing() для возвращения string после escape_string .. $msg Предположим, что строка "complete" завершена ... но она возвращает "error". однако в phpmyadmin запрос успешно выполнен. but something not right at userdob

я думаю, что нет mistake..what не моя ошибка? Пожалуйста, помогите ..

+1

Почему вы не проверяете реальную ошибку? –

+0

Вы не возвращаете или не эхо ничего из своего php-скрипта, чтобы перейти в ваш js-файл! – Saty

+3

1. Не создавайте json вручную, используйте 'json_encode()', 2. не используйте устаревшие функции 'mysql_ *', 3. НИКОГДА НЕ используйте' md5() 'для хеширования пароля. – jeroen

ответ

0

я только что нашел решение, после того, как изменить мой PHP API для подключения к базе данных.
от:

if([email protected]_connect('localhost', 'root', '')||[email protected]_select_db('knewit')){ 
    die("something not right"); 
} 

к:

$mysqli = new mysqli("localhost", "root", "", "knewit"); 

после этого, я изменить мой метод выполняющийся от mysql_query к $mysqli->query.
Я также меняю свой метод почтовых отправлений от always до done. , и окончательный код будет таким.
JQuery скрипт:

$.post("confirmsignup.php", $("#signupform").serialize()).done(function(data) { 
       alert(data.msg); 
      }, "json"); 

PHP скрипт:

 if (isset($_POST['agree'])&&isset($_POST['pass'])&&isset($_POST['repass'])) { 
     $passs=secureing($_POST['pass']); 
     if ($_POST['pass']==secureing($_POST['repass'])) { 
      $query = "INSERT INTO users VALUES('$username', '$gender', '$fname', '$sname', '$email', '$passs', '$dob')"; 
      if(!($query_run = $mysqli->query($query))){ 
       $msg = "error"; 
      } 
      else 
      { 
       $msg = "complete"; 
      } 
     } 
    } 
} 
header('Content-Type: application/json'); 
$arrayName = array('msg' => $msg); 
echo json_encode($arrayName); 

спасибо за ответ на мой вопрос. я очень ценю это.

0

Можете ли вы изменить следующий код с кодом, я использовал mysql_insert_id проверить запись вставлена ​​или нет.

$query = "INSERT INTO users VALUES('$username', '$gender', '$fname', '$sname', '$email', '".md5($pass)."', '$dob')"; 
$query_run = mysql_query($query); 
$id  = mysql_insert_id(); 
if($id > 0) 
{ 
    $msg = "complete"; 
} 
else 
{ 
    $msg = "error"; 
} 

Это может вам помочь.

+0

но результат все тот же .. – Fadhil

+0

@Fadhil Пожалуйста, добавьте первичный ключ и установите для него автоматическое приращение, оно будет работать для вас. –

1

У меня такая же проблема давным-давно!

Это потому, что у вас нет первичного ключа AI в таблице!

Добавить поле, подобное этому в стол: idINTPrimary KeyAuto Increment. это будет работать!

и перейти на mysqli или pdo для лучшей безопасности и поддержки! ;)

0

попробовать мой код, кажется, вы поставили неправильное условие

if (isset($_POST['gender'])&&isset($_POST['fname'])&&isset($_POST['sname'])&&isset($_POST['username'])&&isset($_POST['dob'])) { 
    $gender=secureing($_POST['gender']); 
    $fname=secureing($_POST['fname']); 
    $sname=secureing($_POST['sname']); 
    $username=secureing($_POST['username']); 
    $email=secureing($_POST['email']); 
    $dob=secureing($_POST['dob']); 
    if (isset($_POST['agree'])&&isset($_POST['pass'])&&isset($_POST['repass'])) { 
     $pass=secureing($_POST['pass']); 
     if ($_POST['pass']==secureing($_POST['repass'])) { 
      $query = "INSERT INTO users VALUES('$username', '$gender', '$fname', '$sname', '$email', '".md5($pass)."', '$dob')"; 
      if(!(mysql_query($query))){ 
       $msg = "error"; 
      }else{ 
       $msg = "complete"; 
      } 
     } 
    } 
} 
Смежные вопросы