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)