PHP json_encode显示来自mySQLi的空字符串

时间:2019-02-21 23:20:23

标签: php mysql json mysqli

我做了一些研究,结果发现如果字符串不是UTF8格式,则可能会发生这种情况。

但是,经过大量测试,我可以说它的确是UTF8(或者至少我有100%的把握是ASCII格式),所以显然不是。

for($i=0; $i<$addNovelCount; $i++) { $query = "SELECT * FROM `NovelPages` WHERE `NovelID` = '".mysqli_real_escape_string($link, $novelResults[$i])."'"; $result = mysqli_query($link, $query); while ($row = mysqli_fetch_assoc($result)){ $Novel[] = $row['Image']; $NovelID[] = $row['NovelID']; $PageID[] = $row['ID']; } } echo '<script>alert("'.json_encode($PageID).'");</script>'; 还需要满足其他条件吗?

这是我的代码;

java.io.IOException: com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Bucket is requester pays bucket but no user project provided.",
    "reason" : "required"
  } ],
  "message" : "Bucket is requester pays bucket but no user project provided."
}

2 个答案:

答案 0 :(得分:0)

我解决了这个问题,它是如此简单又滑稽,我想死掉...特别是我花了很多天研究这个问题!

事实证明,原因是我将json放在引号中,从而在数组中创建了双引号,从而破坏了语法。这让我失望了,因为我使用警报作为调试尝试修复的真实事物的一种方法,该问题是使用json在javascript cookie中放置php变量,而不是...

$linkSearchCacheJson = json_encode($linkSearchCacheCleared);

echo'
    <script>
        var cookieVar = '.$linkSearchCacheJson.';
        alert(cookieVar);
        document.cookie = "linkSearchCache = " + cookieVar;
    </script>
';

我在做...

echo'
    <script>
        document.cookie = "linkSearchCache = '.json_encode($linkSearchCacheCleared).'";
    </script>
';

(再次)破坏了语法,因为它在双引号中放置了双引号。

故事的道德; json_encode将变量用双引号引起来。

答案 1 :(得分:-1)

您无法警告json_encoded数据或数据数组,请尝试console.log结果 希望这能解决您的问题。

 echo '<script>console.log("'.json_encode($PageID).'");</script>';