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
相关产品推荐
相关产品推荐

