Php mysql脚本返回Null而不是“long”值

时间:2014-01-04 17:12:49

标签: php jquery mysql

我有一个简单的PHP脚本:

function test() {
    $sql = "select author, synopsis from book";
    $result = mysql_query($sql); // result set   
    while ($rec = mysql_fetch_array($result, MYSQL_ASSOC)) {
        $arr[] = $rec;
    };
    $data = json_encode($arr);  //encode the data in json format
    echo $data;
}

问题是,当我尝试用jQuery读取结果时,我得到'“概要”:NULL'。我想知道是因为数据库中的概要值包含多行?

jQuery代码:

<script>
    $(document).ready(function() {
        $.ajax({
        url: "data/book.php",
        type: 'POST',
        dataType: 'json',
        success : function (data) {
            $('div.book').text(data[0].synopsis);
        }
        });
    });
    </script>

php的输出:

[{"author":"author","synopsis":null}]

回应@iMx建议:

array(2) {
  [0]=>
  array(2) {
   ["author"]=>
string(7) "author"
["synopsis"]=>
string(697) "Le patient du psychiatre 
Dekker, un certain Boone, avoue durant les transes dans lesquelles 
le plonge le docteur, qu'il aurait commis une dizaine de meurtres, 
tous plus sordides les uns que les autres. Seulement, une fois sortie de 
cet �tat d'exaltation, l'homme ne se rappelle de rien. D�sesp�r�, Boone fait une 
tentative de suicide rat�e qui le conduit � l'h�pital. Son compagnon de chambre, 
visiblement bien cram� du cerveau, �voque le nom de Midian, un endroit dans le 
d�sert de l'Athabasca o� se regroupent les damn�s de la terre, 
les �tres qui souffrent horriblement. Convaincu de pouvoir y trouver un r
efuge, et ainsi de mettre un terme � ses crimes, il part sur ce lieu �trange..."
 }

因为有法国字符,可能有问题吗?

1 个答案:

答案 0 :(得分:0)

我猜这是一个编码问题。你的mysql表有什么编码? json_encode()只接受UTF-8字符串,并且可以在非UTF-8字符串上返回null - 也许这是你的问题。尝试使用iconv()mb_convert_encoding()转换字符串,或者在SELECT请求之前使用mysql_query('SET CHARACTER SET utf8')将MySQL查询编码设置为UTF-8。