为什么我不能设置POST变量的值?

时间:2017-08-05 22:54:51

标签: java php android

我目前正在开发一款与服务器交互的Android应用程序(目前为Local)。 为此,我使用PHP与服务器通信Java代码。 这是我第一次使用PHP,所以我很难用它。

由于某些原因,我需要在数据库中保存的所有值都为null,如果我在测试PHP代码时从应用程序或URL获取它们并不重要。我得到的唯一信息是:

  

{"成功":0,"消息":"缺少必填字段"}。

我尝试了print_r($ _POST),我得到了:Array(),不知道这意味着什么。我也尝试过在互联网上看到的所有内容都没有成功。

这是PHP代码:

<?php

$response = array();


if (!empty($_POST['name']) && !empty($_POST['breed']) && !empty($_POST['type']) && !empty($_POST['description']) && !empty($_POST['images']) && !empty($_POST['coords'])) {

$name = $_POST['name'];
$breed = $_POST['breed'];
$type = $_POST['type'];
$description = $_POST['description'];
$images = $_POST['images'];
$coords = $_POST['coords'];


require_once __DIR__ . '/db_connect.php';


$db = new DB_CONNECT();


$result = "INSERT INTO lost_pets (name, breed, type, description, images, coords) VALUES(':name', ':breed', ':type', ':description', ':images', ':coords')";

$stmt = $db->prepare($result);

$stmt->bindParam(':name', $_POST['name'], PDO::PARAM_STR);       
$stmt->bindParam(':breed', $_POST['breed'], PDO::PARAM_STR); 
$stmt->bindParam(':type', $_POST['type'], PDO::PARAM_STR);

$stmt->bindParam(':description', $_POST['description'], PDO::PARAM_STR); 
$stmt->bindParam(':images', $_POST['images'], PDO::PARAM_STR);   
$stmt->bindParam(':coords', $_POST['coords'], PDO::PARAM_STR);

$stmt->execute(); 


if ($result) {
    // successfully inserted into database
    $response["success"] = 1;
    $response["message"] = "Product successfully created.";


    echo json_encode($response);
} else {
    // failed to insert row
    $response["success"] = 0;
    $response["message"] = "Oops! An error occurred.";


    echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";


echo json_encode($response);
}
?>

我很确定问题出现在这段代码中,而不是Java代码中。我希望你能在这里帮助我,谢谢!

1 个答案:

答案 0 :(得分:1)

您错误地将SQL查询字符串分配给$result变量,然后巧妙地测试查询字符串本身是否成功。

使用$query作为查询字符串,而不是测试$stmt->execute()失败:

if ($stmt->execute() === FALSE) {
    // ERROR
}
else {
    // Success!
}