Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript json_对一个MySQL表进行编码,并对每一行进行URL解码_Javascript_Php_Mysql_Json - Fatal编程技术网

Javascript json_对一个MySQL表进行编码,并对每一行进行URL解码

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

这是我得到的。我有一个MySQL表,在本例中是“businesss”,它有许多行urlencode()数据。我试图使用一个php脚本(getTable.php)获取每一行的表urldecode(),然后使用json_编码将数据作为数组发送回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));

很明显,我做错了什么,因为我造成了一个无限循环,结果什么也没发生。非常感谢您的帮助。

您应该这样做:

$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));