我正在尝试json_encode以下mysqli结果。我的问题是在每行添加到我的数组后,我无法回复json_encode'我的数组,但我能够print_r数组。如果我为这个特定的查询添加一个限制,那么echo json_encode可以工作,但是这个限制是313.我认为这表明了一个php内存限制问题,但在将memory_limit更改为256M后,我仍然只能返回相同数量的数据。我已经尝试过寻找类似的问题,但没有什么能够接近我面临的问题。我的整个PHP脚本都粘贴在下面。任何建议都表示赞赏。
<?php
if(isset($_GET["table"])){
// Open db connection
require "opendb.php";
/*** $table = assay ***/
$table = $_GET["table"];
$query = "SELECT * FROM invitrodb_v1.{$table}";
// Store results from query
$data = mysqli_query($conn, $query);
$table_row = array();
while($row = mysqli_fetch_array($data)){
$table_row[] = $row;
}
/**
*
*print_r displays array contents
*echo json_encode does not
*
**/
//echo json_encode($table_row);
//print_r($table_row);
// Close db connection
require "closedb.php";
}
//***342 rows returned with the assay table when not limited***//
?>
编辑:这是我回来的一个例子。对于这个特定的表,有342行与此类似。这是来自这里找到的公共数据库的数据http://www.epa.gov/ncct/toxcast/data.html(如果有人好奇的话)。
{
"aid": "1",
"asid": "1",
"assay_name": "ACEA_T47D",
"assay_desc": "ACEA_T47D is a cell-based single readout assay using T47D human breast cell line at 80 hours in a 96-well plate.",
"timepoint_hr": "80",
"organism_id": "9606",
"organism": "human",
"tissue": "breast",
"cell_format": "cell line",
"cell_free_component_source": "NA",
"cell_short_name": "T47D",
"cell_growth_mode": "adherent",
"assay_footprint": "microplate: 96-well plate",
"assay_format_type": "cell-based",
"assay_format_type_sub": "cell-based format",
"content_readout_type": "simple",
"dilution_solvent": "DMSO",
"dilution_solvent_percent_max": "0.5"
}
答案 0 :(得分:2)
在得到大家的大力帮助并检查重复链接后,解决方案是在mysqli_connect($host, $username, $password)
之后直接设置编码。
这是通过添加mysqli_set_charset($connection, "utf8");
我还将mysqli_fetch_array()
更改为mysqli_fetch_assoc()
,其中填充只是关联数组,这不是解决方案,但却非常有帮助。
答案 1 :(得分:1)
$table = $_GET["table"];
$query = "SELECT * FROM invitrodb_v1.{$table}";
$data = mysqli_query($conn, $query);
从不在您的代码中执行此操作。 <强>从不即可。你可以在这里找到原因:http://en.wikipedia.org/wiki/SQL_injection
答案 2 :(得分:0)
如果使用PDO,则需要像这样设置utf8编码:
hive> select custom from json_serde_test;
OK
{"customer_id":"4985495}"}