3 回答

TA貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊
query 運(yùn)行標(biāo)準(zhǔn)SQL語句,并要求您正確轉(zhuǎn)義所有數(shù)據(jù),以避免SQL注入和其他問題。
execute運(yùn)行一個準(zhǔn)備好的語句,該語句使您可以綁定參數(shù),以避免需要轉(zhuǎn)義或引用參數(shù)。execute如果您多次重復(fù)查詢,效果也會更好。準(zhǔn)備語句的示例:
$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories);
$sth->bindParam(':colour', $colour);
$sth->execute();
// $calories or $color do not need to be escaped or quoted since the
// data is separated from the query
最佳實踐是堅持準(zhǔn)備好的語句并execute提高安全性。

TA貢獻(xiàn)1982條經(jīng)驗 獲得超2個贊
不,他們不一樣。除了在客戶端提供轉(zhuǎn)義功能外,準(zhǔn)備好的語句在服務(wù)器端也會編譯一次,然后可以在每次執(zhí)行時傳遞不同的參數(shù)。這意味著您可以:
$sth = $db->prepare("SELECT * FROM table WHERE foo = ?");
$sth->execute(array(1));
$results = $sth->fetchAll(PDO::FETCH_ASSOC);
$sth->execute(array(2));
$results = $sth->fetchAll(PDO::FETCH_ASSOC);
盡管在小規(guī)模范圍內(nèi)并不引人注目,但它們通常會為您帶來性能改進(jìn)。閱讀更多有關(guān)準(zhǔn)備好的語句(MySQL版本)的信息。
- 3 回答
- 0 關(guān)注
- 432 瀏覽
添加回答
舉報