0

非常简单:我正在使用准备好的语句来选择数据并以 json_encode 形式返回。

问题:我没有收到一个完整的返回数据的 JSON 字符串,而是得到如下内容:

[true, true, true, true]

我的猜测是它正在检查是否设置了每个值,然后它只是以布尔形式返回值是否已设置。

$stmt = $connection->prepare("SELECT * FROM details WHERE age = ?");
$stmt->bind_param('i', $age);
$stmt->execute();
$json = array();
while($row = $stmt->fetch()){
$json[] = $row;
}

echo json_encode($json);

这是我正在使用的 AJAX。

$(document).ready(
    function () {
        $('#call_back_btn').click(function() {
            $.post("process.php", {
                name:   $('#name').val(),
                age:    $('#age').val(),
                value:  $('#value').val(),
                task:   "submit_prepared"
            }, 
            function(data) {
                alert(data);
            })
        })
    });

我应该怎么做才能将我的数据返回到 JSON 字符串中?谢谢你。

4

2 回答 2

3

请查看$stmt->fetch()的文档。您收到布尔值是完全正确的。修改了要使用的代码bind_result

$stmt = $connection->prepare("SELECT name, age FROM details");
$stmt->execute();
$stmt->bind_result($name, $age);
$json = array();
while($stmt->fetch()){
  $json[] = array("name" => $name, "age" => $age);
}

echo json_encode($json);
于 2013-10-13T18:01:00.210 回答
1

尝试从 php 打印 $json 以确保数组正确。然后再次在php中打印json_encode($json)变量,不用ajax。我通常对查询进行硬编码并直接从浏览器运行它。这样,您将确保 php.ini 生成正确的数据。

也尝试使用 $.ajax 函数。这样,您将拥有更多的控制权。

$.ajax({
    url: 'process.php',
    type: 'POST',
    dataType: 'JSON',
    data: {YOUR DATA GOES HERE},
    success: function(data){
            alert(data);
     }
});
于 2013-10-13T17:57:11.853 回答