我編寫了一個簡單的php文件(使用GET方法調用),返回一個json文件。代碼如下位置:Json編碼爲某些字符返回空值
$q=$_GET["q"];
$query = "SELECT name, surname, data, session from users where id= ?";
$stmt = $connectiondb->prepare($query);
$stmt->bind_param('i', $id);
$id= $q;
$stmt->execute();
$stmt->bind_result($name,$surname,$data,$session);
$stmt->fetch();
$stmt->close();
$array = array("name" => $name, "surname" => $surname,"data" => $data, "session" => $session);
echo json_encode($array);
在我的數據庫(MySQL的)的表中的字段「會話」以這種方式definied:
Type : text
Collation: utf8_general_ci
嘗試啓動腳本選擇從一個排表「用戶」,其中session的值爲"last session"
,結果如下:
{"name":"John","surname":"Mayer","date":"2013-01-01","session":"last session"}
並且這很好。但是,當我在表中提交會議的值爲"1° session"
腳本生成以下的輸出:
{"name":"Mike","surname":"Stern","date":"2013-04-02","session":null}
(你可以海會議是在JSON輸出空)
我覺得現在的問題是產生字符°
。我怎麼解決這個問題?
編輯:
我嘗試添加代碼的PHP的下面一行:
$session = utf8_decode($session);
,我得到這樣的:
{"name":"Mike","surname":"Stern","date":"2013-04-02","session":"1? session"}
我已經不再是空值,但°
被翻譯成?
字符。
你能證明你的表的內容返回通過'SELECT * FROM users'? –
@SylvainLeroux如果我打印變量php會話,它會返回我「1°會話」 – GVillani82
@SylvainLeroux我相信這是正確的方法。變量php都是正確創建的。看這裏http://php.net/manual/it/mysqli-stmt.bind-param.php bind_param的使用 – GVillani82