Php mySQLi数组直接到json数组

Php mySQLi数组直接到json数组,php,mysql,arrays,json,mysqli,Php,Mysql,Arrays,Json,Mysqli,有没有可能让mysqli直接吐出一个数组,然后用php进行json_编码(用jquery检索) 我是说。。避免做一个while循环 我有这个: $sql = 'SELECT id, name FROM thetable'; $stmt = $conn->prepare($sql); if ($stmt) { $stmt->execute(); $stmt->store_result(); if ($s

有没有可能让mysqli直接吐出一个数组,然后用php进行json_编码(用jquery检索)

我是说。。避免做一个while循环

我有这个:

    $sql = 'SELECT id, name FROM thetable';
    $stmt = $conn->prepare($sql);

    if ($stmt) {

        $stmt->execute();
        $stmt->store_result();

        if ($stmt->num_rows > 0) {
            $stmt->bind_result($sql_id, $sql_name);

            $json = array();

            while($row = $stmt->fetch()){
                $json[] = $sql_id.'=>'.$sql_name;
            }

            echo json_encode($json);

        }

    }

(这只是我代码的简化简短版本)

如果您的查询没有任何参数,您最好避免使用prepared语句。像这样的东西就足够了

header('Content-type: application/json');
echo json_encode(
    $conn->query('SELECT id, name FROM thetable')
         ->fetch_all(MYSQLI_ASSOC)
);
exit;
如果您确实需要该声明,请使用


这是实际的查询还是只是一种简化?当您可以使用
$conn->query('SELECT id,name FROM the table')->fetch_all()
时,在这里使用一个没有任何参数的预处理语句会使语句过于复杂。。但既然你这么说了,也许我不需要为这个准备好的声明。那么代码会是什么样子呢?放弃准备线?试试这个。喜欢简单。。内容头真的有必要吗?@mowgli如果你要交付JSON,我会这么说。否则,PHP将使用默认标题
text/html
,该标题与contentOk不匹配。为什么退出;之后呢?我确实需要一些检查(就像我在代码中做的那样),看看查询是否返回了一些东西。所以我想我必须拆分紧凑的echo行
echo…
可以替换为
exit(json\u encode($result->fetch\u all(MYSQLI\u ASSOC))exit()
将输出给定的字符串。
$stmt = $conn->prepare($sql);
// $stmt->bind_param(...);
$stmt->execute();
$result = $stmt->get_result();

header('Content-type: application/json');
echo json_encode($result->fetch_all(MYSQLI_ASSOC));
exit;