【发布时间】:2021-01-04 01:17:51
【问题描述】:
我是 PHP 和 XAMPP mySQL 的新手。 我正在经历this tutorial,我正在尝试根据主键 - id 在我的数据库中返回特定行。
但是我的 $GET 调用似乎返回 null,并且调用 else 命令返回所有行。
这是我的数据库,表名为“students”:
这是我的 GET 调用:
//Check connection
if ($conn -> connect_error){
die("Connection failed: " .$conn->connect_error);
}
if ($_SERVER['REQUEST_METHOD'] === 'GET'){
if (isset($_GET['id'])){
//if id not null, id used to fetch single row
$id = $conn->real_escape_string($_GET['id']);
$sql = $conn->query("SELECT * FROM students WHERE id = '$id'");
$data = $sql->fetch_assoc();
}else{
//else fetch all rows
$data = array();
$sql = $conn->query("SELECT * FROM students");
while($d = $sql->fetch_assoc()){
$data[] = $d;
}
}
// Retunr json data
exit(json_encode($data));
}
我正在 postman 中测试 $GET 命令,URL 指向我在 XAMMP 的 htdocs 目录中的 php CRUD API,并指定了表(学生)和索引:
http://localhost/crud_api/api/students/1.
查询将返回 200-OK 响应并返回与 else 语句保持一致的所有行。 所以我的问题是为什么 $GET['id] 返回 null?
【问题讨论】:
-
没有您的原始表单,无法调试。作为调试工具,您可以注释掉其余代码并执行
print_r($_GET); -
GET 参数指定为
http://localhost/crud_api/api/app.php/students/?id=1。 -
嗨,你能扩展'origin form吗?我在 Ionic 5 应用程序中使用相同的 url,但使用邮递员测试 API
-
您的代码对 SQL 注入开放 - 请考虑使用Prepared Statements
-
谢谢-但我正在学习教程