我的php文件不会以JSON格式返回所有值
因此,我有一个数据库,我编写了一个我的php文件不会以JSON格式返回所有值,php,mysql,json,post,Php,Mysql,Json,Post,因此,我有一个数据库,我编写了一个php文件,将值插入表,然后返回该表中的所有值 然而,我的代码只从表中返回一个随机值,而不是全部。我不知道为什么,但这是我的代码: <?php include_once "init.php"; if(!empty($_POST['names'])){ $contactname = $_POST['names']; $query = "INSERT INTO contacts (contactID, names)
php
文件,将值插入表
,然后返回该表
中的所有值
然而,我的代码只从表中返回一个随机值,而不是全部。我不知道为什么,但这是我的代码:
<?php
include_once "init.php";
if(!empty($_POST['names'])){
$contactname = $_POST['names'];
$query = "INSERT INTO contacts (contactID, names)
VALUES('NULL', ?)";
$results = $conn -> prepare($query);
$results->bind_param('s', $contactname);
$results->execute();
$results->close();
echo json_encode("Success");
$query_two = "SELECT names FROM contacts";
$result = mysqli_query($conn, $query_two);
$response = array();
if(mysqli_num_rows($result)){
while($row = mysqli_fetch_assoc($result)){
$response["names"][] = $row["names"];
}
}
echo json_encode($response);
}
else{
echo json_encode("Something went wrong");
}
?>
在您的行中:
$response["names"] = $row["names"];
您正在替换$response[“names”]
的值。相反,请尝试将其添加到阵列:
$response = array("names" => array());
if(mysqli_num_rows($result)){
while($row = mysqli_fetch_assoc($result)){
$response["names"][] = $row["names"];
}
}
要使用一个JSON对象,需要在顶部初始化$response
,并根据需要更改值
<?php
include_once "init.php";
$response = ['success' => false, 'message' => null, 'names' => []];
if(empty($_POST['names'])) {
$response['message'] = 'No names were provided in the request';
} else {
$contactname = $_POST['names'];
$query = "INSERT INTO contacts (contactID, names) VALUES('NULL', ?)";
$results = $conn->prepare($query);
$results->bind_param('s', $contactname);
$results->execute();
$results->close();
$response['success'] = true;
$query_two = "SELECT names FROM contacts";
$result = mysqli_query($conn, $query_two);
if(mysqli_num_rows($result)){
while($row = mysqli_fetch_assoc($result)){
$response['names'][] = $row['names'];
}
}
}
echo json_encode($response);
您正在覆盖循环中的$response[“names”]
。您应该使用类似于$response[“names”][
或$response[][“names”]
的内容。现在只得到最后一行的值。OMG wow。我可以发誓,我以前也做过类似的事情,但没有成功。它现在可以工作了,但是哇那[]
!无论如何,我会投票接受这个答案。谢谢你的迅速回复。顺便问一下,第一个echo json_encode(“Success)”
怎么没有被执行?我还想看看第一行为什么不$response['success']=true代码>将您的响应作为一个json对象。老实说,我认为没有理由不打印它,但是如果通过AJAX调用此代码,打印“成功”可能会影响响应的解释方式。在这种情况下,我建议在开始时初始化$response
,并在此基础上构建JSON对象(正如@Progrock所建议的)