PHP、制作MySQL语句及引号的使用

标签 php mysql

在 php 中设置了一个 mysqli 对象后,我想将一些 POST 变量插入到一个表中,但我有一个关于引号如何计算的问题:

$sql = "INSERT INTO whatever (a, b, c)
 VALUES ('$_POST[a]','$_POST[b]','$_POST[c]')";

不过,我知道,大多数时候我使用的是全局变量,如 POST 或 GET,变量名称周围有引号——我的问题是我是否必须在上面的 sql 语句中这样做?然后我应该在这些变量名周围转义单引号还是双引号?不确定引号是否必要...

最佳答案

既然您已经在使用 MySQLi,为什么不使用准备好的语句呢?

if ($stmt = $mysqli->prepare('INSERT INTO whatever (a,b,c) VALUES (?,?,?)') {
   $stmt->bind_param('sss', $_POST['a'], $_POST['b'], $_POST['c']);
   ....

这将自动并安全地为您处理报价(防止 SQL 注入(inject))。

参见 http://www.php.net/manual/en/mysqli-stmt.bind-param.php例如用法。

关于PHP、制作MySQL语句及引号的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3484395/

相关文章:

如果不为空,Mysql按base_price或discount_value排序

php - Ghost Blog Install 仅显示文件索引列表

javascript - 如何将我的 Bootstrap 按钮链接到从客户端接收数据的 php 代码

php - 从数据库中获取数据并将其分隔在不同的数组中

php - ORDER BY 破坏 mysql 查询

mysql - SQL 按 2 个日期字段排序

php - 在 while 循环中提交表单后显示信息并将新记录上传到 MySQL 表中

PHP正则表达式的单词短语语法?

mysql - 使用 JOIN 语句扩展 ActiveRecord 多态关联?

mysql 在加载数据时去除 unicode 斜杠