在Joomla DB中对introtext的MySQL查询有时会返回NULL吗?

时间:2012-05-07 23:16:20

标签: php mysql json joomla

我有一个PHP脚本,在我的Joomla DB中搜索#_content中的introtext字段,并将结果作为json_encoded字符串返回。

不确定原因,但是一些内部文本字段在JSON字符串中是NULL(例如{“introtext”:null},{“introtext”:null})当它们显然不是/不应该是。有些人回复文本就好了。

这是我的剧本。 。 。

<?php
    /* Connect to database */
    $DB_HostName = "**";
    $DB_Name = "**";
    $DB_User = "**";

    @mysql_connect($DB_HostName,$DB_User) or die ('Could not connect');
    @mysql_select_db($DB_Name) or die ('Could not find database');

    $result = mysql_query ("SELECT introtext FROM **_content") or die (mysql_error());

    $records = array();
    while ($row = mysql_fetch_assoc($result)) {
        $records[] = $row;
    }

    echo json_encode($records, JSON_HEX_TAG);

    mysql_close();
?>

DB introtext字段包含HTML标记文本。当我直接在DB的phpMyAdmin工具中输入时,我上面写的查询就成功了。 introtext字段包含一些空白条目(e.g. <p></p>),但绝大多数都包含HTML标记文本。该查询返回* _content表中所有introtext字段的结果。

更新

我发现我的问题是json_encode函数。此功能仅适用于UTF-8编码数据,并非我的introtext中的所有内容都以此格式正确编码。如果编码不正确,则会返回NULL。解决方案是通过我的PHP脚本中的函数运行我的数组,该函数将在返回json_encoded数据之前正确编码。

请参阅此链接,了解评论中的一些选项:http://www.php.net/manual/en/function.json-encode.php

现在我只需要删除所有HTML标记(使用strip_tags尝试完成此操作),这样我就可以使用文章文本了。任何有关如何做到这一点的建议表示赞赏。

0 个答案:

没有答案