0

我有一些存储在数据库中的 html。我正在使用以下代码检索它:

include('globals.php');
$callback = isset($_REQUEST['callback'])?$_REQUEST['callback']:FALSE;
$page_id=$_REQUEST['page_id'];
$result = $mysqli->query("SELECT html FROM pages WHERE page_id=$page_id")->fetch_object();
$html = $result->html;
$output = array("html"=>$html);
if($callback){
    header('Content-Type: text/javascript');
    echo $callback . '(' . json_encode($output) . ');';
} else {
    header('Content-Type: application/json');
    echo json_encode($output);
}

json_encode 仅返回 {"html":null} 如果我回显 $html 变量本身,则 html 代码就在那里。但是,如果我在设置后立即为 $output 设置回显,我会得到 Array("html":null)。因此,当 html 被写入数组时,它发生了一些事情。

4

1 回答 1

0

挖掘并在一个有点相关的线程上找到了答案。这个答案可以在这里找到:https ://stackoverflow.com/a/1972335/469219

它使用较旧的 mysql_query 语法而不是较新的 mysqli。我更新的代码如下所示:

include('globals.php');
$callback = isset($_REQUEST['callback'])?$_REQUEST['callback']:FALSE;
$page_id=$_REQUEST['page_id'];
$mysqli->set_charset('utf8');
$result = $mysqli->query("SELECT html FROM pages WHERE page_id=$page_id")->fetch_object();
$html = $result->html;
$output = array("html"=>$html);
if($callback){
    header('Content-Type: text/javascript');
    echo $callback . '(' . json_encode($output) . ');';
} else {
    header('Content-Type: application/json');
    echo json_encode($output);
}

注意新行$mysqli->set_charset('utf8');

于 2013-03-21T20:22:28.287 回答