【发布时间】:2023-04-01 16:17:01
【问题描述】:
我正在尝试使用 RESTful Web 服务测试插入数据库。我跟着这个教程https://trinitytuts.com/build-first-web-service-php/ 每当我发布数据时,我都会成功返回,但数据库不显示信息(即它创建了一个条目,但所有字段都是空白的)。我 75% 确定它是 Advanced Rest Client,但我不知道它有什么问题。这是代码/发布命令。
帖子字符串是 name=Apple&email=banna%40orange.com&pwd=12345&status=ok,我使用 Advanced Rest Client 发送它的图片。
confi.php 文件
<?php
$conn = mysqli_connect("localhost", "root", "", 'tuts_rest');
?>
其余代码
<?php
include_once('confi.php');
if($_SERVER['REQUEST_METHOD'] == "POST"){
$name = isset($_POST['name']) ? mysqli_real_escape_string($_POST['name']) : "";
$email = isset($_POST['email']) ? mysqli_real_escape_string($_POST['email']) : "";
$password = isset($_POST['pwd']) ? mysqli_real_escape_string($_POST['pwd']) : "";
$status = isset($_POST['status']) ? mysqli_real_escape_string($_POST['status']) : "";
// Insert data into data base
$sql = "INSERT INTO users (ID, name, email, password, status) VALUES ('' , '" . $name . "', '" . $email . "', '" . $password . "', '" . $status . "');";
$qur = $conn->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");
}
mysqli_close($conn);
/* Output header */
header('Content-type: application/json');
echo json_encode($json);
?>
谢谢!
【问题讨论】:
-
如果可以的话,你应该stop using
mysql_*functions。它们不再被维护并且是officially deprecated。改为了解 prepared statements,并考虑使用 PDO,it's really not hard。 -
$sql = "INSERT INTO users (ID, name, email, password, status) VALUES ('' , '" . $name . "', '" . $email . "', '" . $password . "', '" . $status . "');"; -
请不要发布屏幕截图,尤其是难以辨认的屏幕截图,除非演示文稿与问题相关。还有那个教程教你非常坏的习惯,那种风格的 PHP 是直接从 1990 年代出来的,所以请不要使用它。像PHP the Right Way 这样的指南可以帮助解释现代最佳实践。学习和使用像Laravel 这样的development framework 将大大提高您的工作效率。
-
警告:使用
mysqli时,您应该使用参数化查询和bind_param将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您将创建严重的SQL injection bugs。 切勿将$_POST数据直接放入查询中,并避免使用手动转义,因为一个错误可能会造成混乱。