Php json_encode传递空值
代码:Php json_encode传递空值,php,mysql,json,Php,Mysql,Json,代码: <?php $datoBuscar = $_GET["term"]; $conexion = mysql_connect("localhost", "root", ""); mysql_select_db("ap_contable"); $ssql = "SELECT provincia_id, nombre, codigopostal FROM ciudades WHERE codigopostal LIKE '%" . $datoBuscar . "%' LIMIT 50
<?php
$datoBuscar = $_GET["term"];
$conexion = mysql_connect("localhost", "root", "");
mysql_select_db("ap_contable");
$ssql = "SELECT provincia_id, nombre, codigopostal FROM ciudades WHERE codigopostal LIKE '%" . $datoBuscar . "%' LIMIT 50";
$rs = mysql_query($ssql, $conexion);
$arrayElementos = array();
while ($fila = mysql_fetch_array($rs)){
echo $fila[provincia_id];
$queryp = "SELECT nombre FROM provincias WHERE id = '$fila[provincia_id]' LIMIT 1";
$resultp = mysql_query($queryp, $conexion);
$foundp = mysql_fetch_array($resultp);
echo $foundp['nombre'];
$row['prov'] = $foundp['nombre'];
$row_set[] = $row;
}
echo json_encode($row_set);
?>
我特意放置了ECHO,以查看它是否从MySQL数据库中获取数据,以及是否得到了数据。问题是,当我将其分配给数组$row['prov']=$foundp['nombre']时;问题在哪里?如果它说NULL,那么应该说Entre Rios您的字符串需要UTF-8编码(这是
json\u encode()
要求)。试试这个:
$row['prov'] = utf8_encode($foundp['nombre']);
或者,您可以在MySQL连接中将
字符集设置为utf8mb4
。理想情况下,您应该在UTF-8上拥有所有功能。阅读。嗯,您的代码错误的原因有很多:
不推荐使用mysql
改用PDO
传递给SQL的未受保护的$datoBuscar变量
未使用的$arrayElementos
您应该像这样连接这两个表:SELECT p.nombre FROM provincias AS p JOIN ciudades AS c ON p.id=c.provincia\u id,其中c.cod类似“%”,$datobusar。“%”
未定义$row_集合
未定义$row
结束?>不应在纯PHP文件中使用
因此,它应该是这样的(未经测试的代码):
PS:如果你想编写好的PHP代码,启用通知和警告错误报告,你会惊讶于你错过了什么以及“这段代码最初是如何工作的?!”要将$row数组分配到$row\u set数组,请使用
$row_set = $row;
这样,您将在$row_集合中获得$row数组的所有内容。
无论何时运行loog,并且在同一索引处设置$row_set的值,那么您将只获得数组中的最后一个循环执行值。如果需要所有结果,则可以使用array_push()代码>
php手册中的说明int-array\u-push(数组和$array,混合$value1[,混合$…])
。
在你的情况下,你可以使用
array_push($row_set, $row);
而不是
$row_set[] = $row;
警告:如果您只是在学习PHP,请不要使用该界面。它是如此可怕和危险,以至于在PHP7中被删除。替换类和指南类说明了最佳实践。你的用户数据没有,也有,可以被利用。我不是一个专业的程序员。感谢你的建议,如果你使用PDO和占位符值,将在你的第二次查询中修复你的字符串插值错误。很高兴我能帮上忙。不要忘记接受对你帮助最大的答案,将问题标记为已解决。这??我的英语,我来自阿根廷,我用谷歌翻译。
array_push($row_set, $row);
$row_set[] = $row;