Joh*_*ith 6 php database validation post pdo
我在PDO中读到,如果你使用prepare并在execute中传递变量,则不需要转义变量:
$st = $dbh->prepare("INSERT INTO mytable (name,email) VALUES (?,?)");
$st->execute(array($_POST['name'], $_POST['email']));
Run Code Online (Sandbox Code Playgroud)
这是真的吗?
或者我还需要在那里用$ _POST做些什么吗?
在准备好的语句中,不需要转义(并且自行转义会导致双重转义,导致转义数据被写入数据库).
但是,PDO编写的语句无法处理所有查询变体,有时您必须将"外部"数据直接插入查询字符串,这意味着您将负责正确地转义它.特别是,无法使用预准备语句指定表和/或字段名称更改的动态查询.例如
SELECT ? FROM ? WHERE ?=?
Run Code Online (Sandbox Code Playgroud)
无法做到.只能使用占位符指定值.