我有一個查詢下面,我之前的mysql_query沒有和它正確執行。但使用PDO它顯示了一些錯誤PDO示值誤差
致命錯誤:未捕獲的異常「PDOException」有消息「SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的在線使用近「)」 1'
這是我的代碼的mysql_query正確的語法手冊:
$sql1 = "SELECT * FROM product WHERE id IN (";
foreach($_SESSION['cart'] as $id => $value){
$sql1 .= $id.',';
}
$sql1 = substr($sql1, 0, -1) .")";
$query = mysql_query($sql1);
使用PDO沒有準備發言..:
$sql1 = "SELECT * FROM product WHERE id IN (";
foreach($_SESSION['cart'] as $id => $value){
$sql1 .= $id.',';
}
$sql1 = substr($sql1, 0, -1) .")";
$query = $db->query($sql1);
您應該使用準備好的查詢此添加未命名的佔位符。插入'?',綁定參數。 – Brad
將'mysql_'改爲'PDO'並不能解決你直接向你的查詢中注入變量的事實,因爲它可能會失敗(並且**非常不安全!)。 – h2ooooooo
我知道這一點很好...使用準備好的語句和綁定參數不會解決這個問題..我會在以後防止sql注入 – nick