在 SQL 查询中准备语句,同时在 PHP 中保存 JSON 数据
Prepared statements in SQL query while saving JSON data in PHP
我有简单的 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);
为什么显示语法错误?查询有问题吗?
您需要将插入的占位符括在花括号中,即 $row['my_name']
-> {$row['my_name']}
:
$sql = "INSERT INTO table1 (my_name, hobby, other) VALUES ({$row['my_name']}, {$row['hobby']}, {$row['other']})";
这仅涉及 PHP 语法。
您现在遇到的 SQL 语法错误是下一个问题。
"fix" 最简单的方法是在占位符周围包含额外的撇号,即
$sql = "INSERT INTO table1 (my_name, hobby, other) VALUES ('{$row['my_name']}', '{$row['hobby']}', '{$row['other']}')";
但不要那样做, 因为此代码是经典 SQL 注入漏洞 的示例。
考虑改用 prepared statement — 这完全消除了 PHP 的字符串插值。
我有简单的 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);
为什么显示语法错误?查询有问题吗?
您需要将插入的占位符括在花括号中,即 $row['my_name']
-> {$row['my_name']}
:
$sql = "INSERT INTO table1 (my_name, hobby, other) VALUES ({$row['my_name']}, {$row['hobby']}, {$row['other']})";
这仅涉及 PHP 语法。 您现在遇到的 SQL 语法错误是下一个问题。 "fix" 最简单的方法是在占位符周围包含额外的撇号,即
$sql = "INSERT INTO table1 (my_name, hobby, other) VALUES ('{$row['my_name']}', '{$row['hobby']}', '{$row['other']}')";
但不要那样做, 因为此代码是经典 SQL 注入漏洞 的示例。
考虑改用 prepared statement — 这完全消除了 PHP 的字符串插值。