我在使用PDO访问数据库的php脚本中遇到问题。在使用prepare()或execute()在PDO中使用PDO时,似乎无法使PDO逸出字符串。我四处张望,但没有找到解决此问题的答案,因为在我看来,到处都说PDO自动转义字符串。这是我的代码:
prepare()
execute()
$statement = $db->prepare("INSERT INTO Table (ID, Column1, Column2) VALUES (NULL, '$var1', '$var2')"); $query->execute();
让我们承认$var1 = "abc'def",$var2 = "123"问题是我收到一条错误消息,因为引号未转义。
$var1 = "abc'def"
$var2 = "123"
错误:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误;请参见表11。检查与您的MySQL服务器版本相对应的手册,以在第1行的’def’,‘123’)’附近使用正确的语法
我也尝试过使用该query()方法,但在引号中使用相同的prpblem。我真的不明白,这很令人沮丧。谢谢你的帮助。
query()
试试这个:
# Took out ID, as it should be auto_increment and handled by database $statement = $db->prepare("INSERT INTO Table (Column1, Column2) VALUES (:col1, :col2)"); $statement->bindValue(':col1', $var1, PDO::PARAM_STR); $statement->bindValue(':col2', $var2, PDO::PARAM_INT); $statement->execute();