我有以下运行MySQL查询的PHP API,时间;
$sql = "select article_id, title, summary, image_url from articles limit 20";
我得到以下结果;
http://ec2-54-152-162-157.compute-1.amazonaws.com/list_view.php?user_id=1
以上是我想要的输出格式。
然而,当我将$ sql更改为以下时,我得到一个空白的屏幕;
$user_id = $_GET["user_id"];
$sql = "
select article_id, title, summary, image_url
from articles
where article_id in
(
select max(article_id) as last_article_id
from articles as a
join media_sources as ms
on a.rss_source_id = ms.media_source_id
where article_id not in
(
select article_id
from responses
where (activity_id = 1 and response = -1 and user_id = '1')
or (activity_id = 2 and user_id = '1')
)
group by category
) limit 20;"
$db = new mysqli("remotehost", "user", "password", "db_name");
$results = $db->query($sql);
$articles["items"] = array();
while($article = $results->fetch_assoc()){
$item = array ();
$item["article_id"] = $article['article_id'];
$item["article_title"] = $article['title'];
$item["article_summary"] = $article['summary'];
$item["article_image"] = $article['image_url'];
array_push($articles["items"], $item);
//echo json_encode($item);
}
echo json_encode($articles);
我在代码底线的第3个中取消注释了echo json_encode($ item);并将其放在下面的API中。所以有数据,但我无法进入我需要的格式。
http://ec2-54-152-162-157.compute-1.amazonaws.com/list_view2.php?user_id=1
********************************** EDIT ************ *********
json_last_error_msg()返回:
Malformed UTF-8 characters, possibly incorrectly encoded.
所以我猜有些字符无法在Json中编码,我将不得不调查并删除它们。但仍然不确定为什么这个工作,因为它是相同的数据编码;
echo json_encode($item);
答案 0 :(得分:0)
如果它在MySQL控制台上运行,则问题很可能是PHP脚本用于连接的凭据(可能无法访问某些内容)。它是同一个用户吗? php用户是否有权创建临时表并访问所需的所有数据?
或者它可能需要很长时间并且是错误的。您使用哪个命令用于php?尝试回显您收到的错误或检查日志。如果它失败了会告诉你它失败的原因。
如果它的php我认为它的mysql用户权限,php max_execution设置,php max memory
答案 1 :(得分:0)
添加此行修复它;
mysqli_set_charset($db, "utf8");