将变量添加到SQL查询中的最防错的方法是通过 准备好的语句 添加变量。
因此,对于您运行的每个查询,如果至少要使用一个变量,则必须用占位符代替它,然后准备查询,然后执行它,并分别传递变量。
首先,您必须更改查询,在变量中添加占位符。您的查询将变为:
$sql = "INSERT INTO users (fname, lname) VALUES (?, ?)";
然后,您将必须准备它,绑定变量并执行:
$stmt = mysqli_prepare($conn, $sql);mysqli_stmt_bind_param($stmt, "ss", $fname, $lname);mysqli_stmt_execute($stmt);
如您所见,这只是三个简单的命令:
- prepare()您使用占位符发送查询的位置
- 在bind_param中,您发送带有类型的字符串(“ s”用于字符串,并且可以将其实际用于任何类型),而不是实际变量。
- 和execute()
这样,您始终可以确保添加到查询中的数据不会引起单个SQL语法错误!另外,此代码还可以防止SQL注入!
理解 仅在变量周围加上引号是不够的
,这将非常重要,并最终会导致无数问题,从语法错误到SQL注入。另一方面,由于预准备语句的本质,它是一种防弹解决方案,无法通过数据变量引入任何问题。



