首页 > 解决方案 > 在 SQL 查询中准备语句,同时在 PHP 中保存 JSON 数据

问题描述

我有简单的 php 代码来解析 JSON 文件中的一些数据并将它们保存到 mysql 数据库中。但它显示以下错误:

Parse error: syntax error, unexpected 'my_name' (T_STRING) in C:\xampp\htdocs\mycode.php on line 25

我的php代码如下:

$sql = "INSERT INTO table1 (my_name, hobby, other) VALUES ($row['my_name'], $row['hobby'], $row['other'])"; //line 25

mysqli_query ($conn, $sql);        

为什么显示语法错误?查询中有什么问题吗?

标签: mysqljsonprepared-statementphp-7

解决方案


您需要将插值占位符括在花括号中,即$row['my_name']-> {$row['my_name']}

    $sql = "INSERT INTO table1 (my_name, hobby, other) VALUES ({$row['my_name']}, {$row['hobby']}, {$row['other']})";

这仅涉及 PHP 语法。您现在得到的 SQL 语法错误是下一个问题。“解决”这个问题的最简单方法是在占位符周围包含额外的撇号,即

    $sql = "INSERT INTO table1 (my_name, hobby, other) VALUES ('{$row['my_name']}', '{$row['hobby']}', '{$row['other']}')";

但不要这样做,因为这段代码是典型的SQL 注入漏洞的示例。

考虑改用准备好的语句——这完全消除了 PHP 的字符串插值。


推荐阅读