1 回答

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
那是因?yàn)槟憬壎艘粋€(gè)字符串值,所以它被注入了周圍的單引號(hào)。但最重要的是,您不能在查詢中將表名作為參數(shù)傳遞。綁定機(jī)制旨在傳遞文字值,而表名顯然不是。
在這種特定情況下,除了字符串連接之外別無(wú)選擇:
$sql = "
CREATE TABLE IF NOT EXISTS `$name` (
id int(11) NOT NULL AUTO_INCREMENT,
url varchar(255) NOT NULL,
resolved tinyint(1) NOT NULL,
PRIMARY KEY (id)
)";
$query = $this->_pdo->prepare($sql);
if ($query->execute()) {
...
} else {
...
}
這意味著您需要在將變量傳遞給查詢之前在應(yīng)用程序端徹底驗(yàn)證變量,這不是一件容易的事。
這最終提出了一個(gè)問(wèn)題,即為什么每個(gè)站點(diǎn)都有一個(gè)單獨(dú)的表。我不推薦這種違反基本規(guī)范化規(guī)則的設(shè)計(jì),并且會(huì)很快變成維護(hù)噩夢(mèng)。相反,您應(yīng)該有一個(gè)列出站點(diǎn)的引用表,以及一個(gè)用于所有路徑的表,以及一個(gè)引用站點(diǎn)表的外鍵列。使用適當(dāng)?shù)募軜?gòu)和索引,您不太可能遇到性能問(wèn)題,除非您有數(shù)以億計(jì)的行(在這種情況下可以使用其他選項(xiàng),例如邏輯分區(qū))。
- 1 回答
- 0 關(guān)注
- 152 瀏覽
添加回答
舉報(bào)