在 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/