2016-05-13 122 views
1

is..i尝试从php..here解析JSON的问题是jQuery代码:MySQL查询插入成功,但返回false

$.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()是返回字符串后escape_string .. $msg假设返回字符串“完整”...但它返回“错误”.. 但在phpmyadmin中,查询成功执行.. but something not right at userdob

我觉得没有mistake..what是我的错?请帮助..

+1

你为什么不检查真正的错误? –

+0

你还没有返回或回声你的PHP脚本中的任何东西传入你的js文件! – Saty

+3

1.不要使用'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
我还将我的jquery post方法从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"; 
      } 
     } 
    } 
}