我有一个表有3列id,名称,年龄和我有4个记录创建。 我试图创建一个one GET API,这样我就可以检索所有这些数据,并作为对象模型的数组返回
{
"status":"Success",
"data": [
{ "id":1, "name":"john", "age":34},
{ "id":2, "name":"doe", "age":32},
{ "id":3, "name":"mark", "age":24}
]
}
但是当我使用下面的代码时,数据正在得到null
<?php
header("Access-Control-Allow-Origin: *");
$servername = "localhost";
$database = "db";
$username = "root";
$password = "root";
//// Create connection
$conn = mysqli_connect($servername, $username, $password, $database);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$query = "SELECT * FROM `user` WHERE career = 'software'";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) > 0) {
// valid email
$Subject=mysqli_query($con,$Query);
$i=-1;
while($row = mysqli_fetch_array($Subject))
{
$i++;
$SubjectCode[$i]['id']=$row['id'];
$SubjectCode[$i]['name']=$row['name'];
$SubjectCode[$i]['age']=$row['age'];
}
echo '{
"data":'.json_encode($SubjectCode).',
"status":"success"
}';
//echo json_encode($response);
}else{
$response = array("status"=>"fail", "message"=>"No software engineer available");
echo json_encode($response);
}
?>
我是PHP新手,有没有人可以帮助我纠正我的代码,这样我就可以得到我想要的PHP API
您将连接定义为$conn
并在查询中使用它,然后在另一个查询中使用不存在的$con
,并使用结果$subject
,该结果是false
,因为查询失败。 在查询中选择您想要的列并使用适当的变量,这样就容易多了:
$conn = mysqli_connect($servername, $username, $password, $database);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$query = "SELECT `id`, `name`, `age` FROM `user` WHERE career = 'software'";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) > 0) {
while($row[] = mysqli_fetch_assoc($result));
$response = array("data" => $row, "status" => "success");
} else {
$response = array("status" => "fail", "message" => "No software engineer available");
}
echo json_encode($response);
注意,您需要使用mysqli_fetch_assoc
或mysqli_assoc
。
您将看到通知:Undefined variable:con with:
error_reporting(E_ALL);
ini_set('display_errors', '1');
else部分的逻辑看起来不错。 但是只管理一次变量可能会更顺利一些。
<?php
// ... stuff
$output = []; // will be json_encoded at the end to a string
$query = "SELECT * FROM `user` WHERE career = 'software'";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) > 0) {
// valid email
$Subject=mysqli_query($con,$Query);
$output['status'] = "success";
$output['data'] = [];
while($row = mysqli_fetch_array($Subject))
{
$output['data'][] = $row;
}
}else{
$output['status'] = "fail";
$output['message'] = "No software engineer available";
}
echo json_encode($output);
?>