Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的php文件不会以JSON格式返回所有值_Php_Mysql_Json_Post - Fatal编程技术网

我的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所建议的)