将数据添加到数据库

时间:2016-02-09 10:54:15

标签: php json post

当我尝试使用POST将用户添加到数据库时,会添加一个新用户,但所有字段都为空 有帮助吗?提前谢谢。这是我的源代码:

if($_SERVER['REQUEST_METHOD'] == "POST")                    
{
 // Get data

$name = isset($_POST['name']) ;

 $email = isset($_POST['email']);

 $password = isset($_POST['password']);

 $status = isset($_POST['status']);

 // Insert data into data base

 $sql = "INSERT INTO users (`name`, `email`, `password`, `status`) VALUES     ('$name', '$email', '$password', '$status')";

 $qur = mysql_query($sql);

if($qur){

$json = array("status" => 1, "msg" => "Done User added!");

}else{

 $json = array("status" => 0, "msg" => "Error adding user!");

 }

}else{

$json = array("status" => 0, "msg" => "Request method not accepted");

}


@mysql_close($conn);

/* Output header */

header('Content-type: application/json');

echo json_encode($json);

**

2 个答案:

答案 0 :(得分:1)

isset只返回true或false所以如果你想插入值,你可以检查一下如果条件用上面的代码替换它就可以正常工作

    if($_SERVER['REQUEST_METHOD'] == "POST"){
$name = (isset($_POST['name']))?$_POST['name']:'' ;
$email = (isset($_POST['email']))?$_POST['email']:'';
$password = (isset($_POST['password']))?$_POST['password']:'';
$status = (isset($_POST['status']))?$_POST['status']:'';
$sql = "INSERT INTO users (`name`, `email`, `password`, `status`) VALUES     ('$name', '$email', '$password', '$status')";
$qur = mysql_query($sql);
if($qur){
$json = array("status" => 1, "msg" => "Done User added!");
}else{
 $json = array("status" => 0, "msg" => "Error adding user!");
}
}else{
$json = array("status" => 0, "msg" => "Request method not accepted");
}
@mysql_close($conn);
header('Content-type: application/json');
echo json_encode($json);

将此表单保存在html文件中,并使用此编辑的示例进行检查

    <form method="post">
<input type="text" name="name" value="Red Symbol" />
<input type="text" name="email" value="red@symbol.com" />
<input type="text" name="password" value="chock" />
<input type="text" name="status" value="1" />
<input type="submit" name="submit" value="Submit" />
</form>

答案 1 :(得分:0)

您没有检查是否有任何字段为空。

您需要这样做,并且只有在不执行查询时才执行查询。

您还可以重构代码以避免嵌套if / else:

function sendJson($data){

    header('Content-type: application/json');
    echo json_encode($data);
    //stop execution after sending response
    exit;
}
//if not POST request, exit
if($_SERVER['REQUEST_METHOD'] !== "POST") {
    sendJson(["status" => 0, "msg" => "Request method not accepted"]);
}

//default data
$defaults = [
    'name'      =>  false,
    'email'     =>  false,
    'password'  =>  false,
    'status'    =>  false,
];

$input = array_intersect_key(array_merge($defaults, $_POST), $defaults);

//if empty field, exit
if(in_array(false, $input)){
    sendJson(["status" => 0, "msg" => "All fields are required"]);
}

// Insert data into data base
//you REALLY REALLY need to use PDO/MYSQLI with prepared statements, this code is dangerous

$sql = "INSERT INTO users (`name`, `email`, `password`, `status`) VALUES     ('$input[name]', '$input[email]', '$input[password]', '$input[status]')";
$qur = mysql_query($sql);

//if query failed, exit
if(!$qur){
    sendJson(["status" => 0, "msg" => "Error adding user!"]);
}

//if we get here, all is OK
sendJson(["status" => 1, "msg" => "Done User added!"]);

@mysql_close($conn);