这就是我得到的。我有一个MySQL表,在这种情况下'业务'有很多行urlencode()数据。我试图使用PHP脚本(getTable.php)来获取每行的urldecode()表,然后使用json_encode将数据作为数组发送回javascript。这是我到目前为止所拥有的。
$table = $_GET['table'];
$query = "SELECT * FROM $table";
$jsonOut = array();
while($result = mysql_fetch_array(mysql_query($query)))
{
foreach($result as &$value)
{
$value = urldecode($value);
}
$jsonOut[] = $result;
}
echo (json_encode($jsonOut));
显然,我做错了什么,因为我造成了一个无限循环,没有任何东西最终起作用。非常感谢任何帮助。
答案 0 :(得分:1)
这是你所谈论的无限循环
while($result = mysql_fetch_array(mysql_query($query)))
尝试
$recordset=mysql_query($query);
while($result = mysql_fetch_array($recordset)){
}
注意:MySQL API早已被弃用,在您被迫
之前,最好远离它答案 1 :(得分:1)
试试这段代码:
$table = $_GET['table'];
$query = "SELECT * FROM $table";
$jsonOut = array();
$result = mysql_query($query);
while($result = mysql_fetch_array($result))
{
$jsonOut[] = $result;
}
echo (json_encode($jsonOut));
实际上,查询必须只执行一次,而不是每次while
循环的迭代执行一次,否则你最终会得到一个无限循环!
另外,作为旁注,您应该避免使用mysql_*
功能,因为它们现已弃用,如果可以,请尝试切换到PDO
。
编辑:
如果您需要每行urldecode
,请替换
$jsonOut[] = $result;
与
$jsonOut[] = array_map('urldecode', $result);
在while
循环内。
答案 2 :(得分:0)
你应该这样做:
$query = mysql_query($query);
while($result = mysql_fetch_array($query)) {
答案 3 :(得分:0)
您可以使用以下代码检索和解码参数。 (基于@Matteo Tassinari的回答)
$table = $_GET['table'];
//This could be a SQL injection
$query = "SELECT * FROM " . mysql_real_escape_string($table);
$jsonOut = array();
$result = mysql_query($query);
while($result = mysql_fetch_array($result))
{
$newArray = array();
foreach ($result as $k => $v) {
$newArray[$k] = urldecode($v);
}
$jsonOut[] = $newArray;
}
echo (json_encode($jsonOut));