【发布时间】:2013-08-03 21:19:42
【问题描述】:
我正在尝试在 PHP 中以 JSON 格式返回用户的名字和姓氏列表。
我的 PHP 看起来像这样:
$_Query = '
SELECT
Fname,Lname
FROM
users
WHERE
number = "'.$_REQUEST['number'].'"
;';
$SQLResult = mysql_query($_Query) or die(mysql_error());
$_UserData = array();
if(mysql_num_rows($SQLResult) <> 0){
while($SQLRow = mysql_fetch_array($SQLResult)){
$_UserData['Fname'] = $SQLRow['Fname'];
$_UserData['Lname'] = $SQLRow['Lname'];
}
}
echo json_encode($_UserData);
我希望格式中不止一行
{"Fname":["First_name1","First_name2"],"Lname":["Last_name1","Last_name2"]}
当然。但是脚本返回具有正确条件的最后一行
{"Fname":"Steve","Lname":"LastName"}
MySQl 服务器使用相同的查询返回它应该返回的内容。
+--------------+-------------+
| Fname | Lname |
+--------------+-------------+
| First_name1 | Last_name1 |
| First_name2 | Last_name2 |
+--------------+-------------+
为什么会发生这种情况,我应该如何解决它?谢谢!
【问题讨论】:
-
因为你的循环会覆盖以前的值,所以你总是,而且只得到最后一条记录。
-
mysql_query容易受到 SQL 注入攻击。不要在生产代码中使用它(通常没有理由使用它)。请改用mysqli。 -
您对 SQL 注入敞开了大门。请了解如何使用参数化查询(最好使用 PDO 模块)来保护您的 Web 应用程序。 bobby-tables.com/php 有一些示例可以帮助您入门。
-
@Andy @Alex 谢谢你,我会看看。不过,为什么
htmlspecialchars()不解决这个问题? -
htmlspecialcharacters与 SQL 完全无关。