Javascript json_对一个MySQL表进行编码,并对每一行进行URL解码
这是我得到的。我有一个MySQL表,在本例中是“businesss”,它有许多行urlencode()数据。我试图使用一个php脚本(getTable.php)获取每一行的表urldecode(),然后使用json_编码将数据作为数组发送回javascript。这是我到目前为止所拥有的Javascript json_对一个MySQL表进行编码,并对每一行进行URL解码,javascript,php,mysql,json,Javascript,Php,Mysql,Json,这是我得到的。我有一个MySQL表,在本例中是“businesss”,它有许多行urlencode()数据。我试图使用一个php脚本(getTable.php)获取每一行的表urldecode(),然后使用json_编码将数据作为数组发送回javascript。这是我到目前为止所拥有的 $table = $_GET['table']; $query = "SELECT * FROM $table"; $jsonOut = array(); while($result = mysql_fe
$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));
很明显,我做错了什么,因为我造成了一个无限循环,结果什么也没发生。非常感谢您的帮助。您应该这样做:
$query = mysql_query($query);
while($result = mysql_fetch_array($query)) {
这就是你所说的无限循环
while($result = mysql_fetch_array(mysql_query($query)))
试一试
注意:MySQL API早就被弃用了,在您被迫尝试以下代码之前,最好不要使用它:
$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\u*
函数,因为它们现在已被弃用,如果可以,请尝试切换到PDO
编辑:
如果需要urldecode
每行,请更换
$jsonOut[] = $result;
与
在
while
循环中。您可以使用以下代码检索和解码参数。(基于@Matteo Tassinari回答)
这是可行的,但它仍然没有对每一行执行URLDecode。有实现URLDecode的想法吗?您不应该鼓励OP使用不推荐使用的API。我现在正在进行转换项目,但这个领域仍然使用旧的不推荐使用的API。
$jsonOut[] = $result;
$jsonOut[] = array_map('urldecode', $result);
$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));