You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中将SQL查询结果存入变量后转为JSON数组的写法是否正确?

你的写法不正确,这是正确的姿势及注意事项

嘿,这个写法不正确哦,核心问题出在PHP的字符串解析规则上:单引号包裹的内容会被当作纯文本,里面的变量$temp不会被解析成它的实际值,最终你得到的数组里只会是字符串'$temp',而不是从数据库取到的firebase_id。

正确的写法有这几种:

  • 直接传入变量(最推荐,简洁高效):
    $registrationIds = array( $temp );
    
  • 用短数组语法(PHP 5.4+支持,更简洁):
    $registrationIds = [ $temp ];
    
  • 如果非要用引号包裹(其实没必要,除非要拼接其他字符串),可以用双引号(双引号会解析变量):
    $registrationIds = array( "$temp" );
    

重要安全提醒:你的SQL查询存在严重风险!

你当前的SQL语句直接把用户输入的$username拼进查询里,这会导致SQL注入攻击,恶意用户可以通过构造特殊用户名来窃取、篡改你的数据库数据。必须改用预处理语句来修复这个问题,示例代码如下:

// 预处理语句,用?作为占位符
$Sql_Query = "select * from users where username = ?";
$stmt = mysqli_prepare($con, $Sql_Query);
// 绑定参数,"s"表示参数是字符串类型
mysqli_stmt_bind_param($stmt, "s", $username);
mysqli_stmt_execute($stmt);
// 获取查询结果
$result = mysqli_stmt_get_result($stmt);
$check = mysqli_fetch_array($result);
// 注意:你原来拼写的是fierbase_id,应该是firebase_id吧?
$temp = $check['firebase_id'];

内容的提问来源于stack exchange,提问作者aqra youdef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:51:29