2016-02-12 32 views
0

我想更新使用PHP这是在logcat中diplayed错误在数据库中的数据更新mysql中的数据是错误使用PHP

Error: UPDATE usersSET Question1=null2null,Question3=nullnull,Question4=nullnullnullnullWHERE email=bb<br>You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=null2null,Question3=nullnull,Question4=nullnullnullnullWHERE email=bb' at line 1{"error":false,"uid":"56bd5f88afb7b3.99372648","user":{"name":"Bb","email":"bb","created_at":"2016-02-12 09:58:56","updated_at":null,"Question1":"","Question3":"","Question4":""} 

的问题1,问题3和问题4列中的值不会得到更新,它应该分别为null2null,nullnull,nullnullnullnull。它被写入检查您的版本的语法,我在本地运行5.5.12 php版本和5.6.17 mysql版本。我检查了语法和不同的网站上显示的不同显示不同的syntasx如何得到正确的,下面是我的PHP代码

PHP

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "android_api"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
require_once 'include/DB_Functions.php'; 
$db = new DB_Functions(); 

// json response array 
$response = array("error" => FALSE); 

if (isset($_POST['Question1']) && isset($_POST['Question3']) && isset($_POST['Question4'])) { 

    // receiving the post params 
    $email = $_POST['email']; 
    $password = $_POST['password']; 

    $Question1 = $_POST['Question1']; 
    $Question3 = $_POST['Question3']; 
    $Question4 = $_POST['Question4']; 
/*$sql = "INSERT INTO users (Question1, Question2, Question4) 
    VALUES ('$Question1', '$Question3', '$Question4')"; */ 
    $user = $db->getUserByEmailAndPassword($email, $password); 
    // $result = mysql_query("UPDATE users"."SET Question1='$Question1',Question3='$Question3',Question4='$Question4'"."WHERE email=$email"; 
    $sql="UPDATE users"."SET Question1=$Question1,Question3=$Question3,Question4=$Question4"."WHERE email=$email"; 
    if ($conn->query($sql) === TRUE) { 
     echo "New record created successfully"; 
    } else { 
     echo "Error: " . $sql . "<br>" . $conn->error; 
    } 
    // get the user by email and password 
    $user = $db->getUserByEmailAndPassword($email, $password); 

    if ($user != false) { 
     // use is found 
     $response["error"] = FALSE; 
     $response["uid"] = $user["unique_id"]; 
     $response["user"]["name"] = $user["name"]; 
     $response["user"]["email"] = $user["email"]; 
     $response["user"]["created_at"] = $user["created_at"]; 
     $response["user"]["updated_at"] = $user["updated_at"]; 
     $response["user"]["Question1"] = $user["Question1"]; 
      $response["user"]["Question3"] = $user["Question3"]; 
      $response["user"]["Question4"] = $user["Question4"]; 
     echo json_encode($response); 
    } else { 
     // user is not found with the credentials 
     $response["error"] = TRUE; 
     $response["error_msg"] = "ABCD"; 
     echo json_encode($response); 
    } 
} else { 
    // required post params is missing 
    $response["error"] = TRUE; 
    $response["error_msg"] = "abcd"; 
    echo json_encode($response); 
} 
?> 

编辑

阅读答案后现在更改语法错误更改为

Error: UPDATE users SET Question1=null2null,Question3=nullnull,Question4=nullnullnullnull WHERE email=bb<br>Unknown column 'bb' in 'where clause'{"error":false,"uid":"56bd5f88afb7b3.99372648","user":{"name":"Bb","email":"bb","created_at":"2016-02-12 09:58:56","updated_at":null,"Question1":"","Question3":"","Question4":""}} 
+0

users'和'SET' –

回答

1

Mi在这里和那里发现了几个白色空间和qutoes(')。改变你的SQL语句来此

$sql ="UPDATE users" . " SET Question1 = '".$Question1."', Question3 = '".$Question3."', Question4= '".$Question4."' WHERE email = '".$email."'"; 

而且,在这些变量的值不正确的像,为什么你没有得到正确的价值观(或者是你逝去的是什么?)

Question1 = null2null 
Question3 = nullnull 
Question4 = nullnullnullnull 
email = bb 
+0

感谢,但现在的错误更改为错误之间''在$ sql'没有足够的空间:更新用户设置的问题1 = null2null,问题3 = nullnull,问题4 = nullnullnullnull WHERE电子邮件= bb
'where子句'中的未知列'bb'{“error”:false,“uid”:“56bd5f88afb7b3.99372648”,“user”:{“name”:“Bb”,“email”:“bb”, “created_at”:“2016-02-12 09:58:56”,“updated_at”:null,“Question1”:“”,“Question3”:“”,“Question4”:“”}} – JSONParser

+0

,空字符串,这就是为什么它在那里读空值 – JSONParser

+0

引用每列的值。 – Rohit5k2

1

在这里,你错过了3两件事:
1. usersSET
2.行情赋值(问题1 = null2null)之前WHERE关键字(问题4 = nullnullnullnullWHERE)
3.空间后,空间查询的正确版本如下:

UPDATE users SET Question1='null2null', Question3='nullnull' , 
    Question4='nullnullnullnull' WHERE email='b' 

所以取代下面一行在你的脚本:

$sql ="UPDATE users"."SET Question1=$Question1,Question3=$Question3,Question4=$Question4"."WHERE email=$email"; 


$sql =" UPDATE users SET Question1 = '".$Question1."', Question3 = '".$Question3."', Question4= '".$Question4."' WHERE email = '".$email."'"; 
0

嗨,你需要正确地保存细节问题归因于数据包含null作为字符串。

你需要如下准备查询:

Question1 = null2null

你要引用的所有参数保存到数据库中之前。这样

Question1 = 'null2null'

这里是下面的示例更新的代码,供大家参考,让习惯来清洁您的查询,同时具有更好的可读性,适当引用的字符串创建。

$email = $_POST['email']; 
$password = $_POST['password']; 

$Question1 = $_POST['Question1']; 
$Question3 = $_POST['Question3']; 
$Question4 = $_POST['Question4']; 

$user = $db->getUserByEmailAndPassword($email, $password); 

$sql="UPDATE users SET Question1 = '$Question1', Question3 = '$Question3', Question4 = '$Question4' WHERE email = '$email'"; 
if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
}