2014-07-04 83 views
0

我正在用AngularJS構建一個簡單的註冊表單,並使用JQuery的$ .post()將數據發送到PHP頁面。當我發送數據時,它正確地插入數據庫。但是,我正在記錄的返回的json將我的數據字段顯示爲空。JQuery發佈到PHP插入數據,但json響應爲空

控制檯:

{"status":"success","email":null,"id":null,"sessionId":null} 

的Javascript:

$.post("admin/addUser.php", { 
    email: form.email, 
    password: form.password 
}).done(function(data){ 
    console.log(data); 
}); 

PHP:

$email = mysql_real_escape_string($_POST["email"]); 
$password = md5(mysql_real_escape_string($_POST["password"])); 
$sessionId = md5(uniqid(microtime()) . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); 

//Add this user to the database 
$sql = mysql_query("INSERT INTO users (email, password, sessionId) VALUES ('".$email."', '".$password."', '".$sessionId."')"); 

if ($sql){ 
    //Now find the user we just added 
    $getUser = mysql_query("SELECT * FROM users WHERE email = '".$email."' AND sessionId = '".$sessionId."'"); 
    if ($getUser){ 
     $row = mysql_fetch_array($getUser); 
     $user = array(
      'status' => 'success', 
      'email' => $row['email'], 
      'id' => $row['id'], 
      'sessionId' => $row['sessionId'] 
      ); 
      echo json_encode($user); 
    }else{ 
     $user = array(
      'error' => mysql_error() 
     ); 
     echo json_encode($user); 
    } 
}else{ 
    $user = array(
     'error' => mysql_error() 
    ); 
    echo json_encode($user); 
} 

回答

0

好吧,我挖了,找到了答案。這是我的錯誤。我只是將密碼和sessionId存儲爲varchar(30)。當我生成sessionId並將其與數據庫進行覈對時,它在存儲時被切斷,因爲我只允許30個字符。我更新到255並按預期工作:-P。

1

你確定你在這裏

$getUser = mysql_query("SELECT * FROM users WHERE email = '".$email."' AND sessionId = '".$sessionId."'"); 
01只有一條記錄

嘗試轉儲$行並查看響應。順便說一句我建議你增加限制

$getUser = mysql_query("SELECT * FROM users WHERE email = '".$email."' AND sessionId = '".$sessionId."' LIMIT 1"); 
+0

對您的第一個答案+1努力:) –

+0

感謝您的幫助。我加了'if(mysql_num_rows($ getUser)== 1)',它不計算。奇怪,因爲我沒有任何其他數據。我試圖插入數據,如果成功,檢索它並將其作爲json返回。 –

+0

順便說一句我不明白爲什麼你插入後選擇數據? – iamawebgeek