PDO不转义字符串引号

cal*_*nch 4 php sql database pdo

我在php脚本中遇到问题,我使用PDO访问我的数据库.当我使用prepare()execute()在PDO中时,我似乎无法让PDO逃脱我的字符串.我看了一遍,我还没有找到这个问题的答案,因为我看到的每个地方都说PDO会自动逃脱字符串.这是我的代码:

$statement = $db->prepare("INSERT INTO Table (ID, Column1, Column2) VALUES (NULL, '$var1', '$var2')");
$query->execute();
Run Code Online (Sandbox Code Playgroud)

让我们承认$var1 = "abc'def",$var2 = "123"问题是我得到一条错误消息,因为报价没有被转义.

错误:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误; 检查与MySQL服务器版本对应的手册,以便在第1行的"def","123"附近使用正确的语法

我也尝试过使用这种query()方法,但与引号相同.我真的不明白,这令人沮丧.谢谢你的帮助.

Mik*_*ell 13

试试这个:

# 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();
Run Code Online (Sandbox Code Playgroud)