我目前正在开发一款与服务器交互的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代码中。我希望你能在这里帮助我,谢谢!
答案 0 :(得分:1)
您错误地将SQL查询字符串分配给$result
变量,然后巧妙地测试查询字符串本身是否成功。
使用$query
作为查询字符串,而不是测试$stmt->execute()
失败:
if ($stmt->execute() === FALSE) {
// ERROR
}
else {
// Success!
}