我正在嘗試設置基本搜索腳本。建議將當前mysql表中的數據插入臨時表以加快搜索速度。試圖使用UNION ALL將其插入臨時表中
這是到目前爲止,我已經得到了代碼:
$temp = 'search_' . date('YmdHis'); // name your temp table
$sql = "CREATE TEMPORARY TABLE IF NOT EXISTS {$temp} (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Model` varchar(255) default NULL,
`Make` varchar(255) default NULL,
`Year` varchar(255) default NULL,
`Loc.` varchar(255) default NULL,
`Sale Price` varchar(255) default NULL,
`Serial No.` varchar(255) default NULL,
`Stock No.` varchar(255) default NULL,
`Tag No.` varchar(255) default NULL,
`Comments` varchar(255) default NULL,
`Description` varchar(255) default NULL,
FULLTEXT KEY `Model` (`Model`,`Make`,`Year`,`Loc.`,`Sale Price`,`Serial No.`,`Stock No.`,`Tag No.`,`Comments`,`Description`)
)";
$sql .= "INSERT INTO $temp (
id,
Model,
Make,
Year,
`Loc.`,
`Sale Price`,
`Serial No.`,
`Tag No.`,
Comments,
Description
)
(
(SELECT null,`Model`,`Make`,`Year`,`Loc.`,`Sale Price`,`Serial No.`,`Stock No.`,`Tag No.`,`Comments`,`Description` FROM ag_auger_and_grain_handling WHERE Status='IN' or Status='OF'
UNION ALL
SELECT null,`Model`,`Make`,`Year`,`Loc.`,`Sale Price`,`Serial No.`,`Stock No.`,`Tag No.`,`Comments`,`Description` FROM ag_combine WHERE Status='IN' or Status='OF'
UNION
SELECT null,`Model`,`Make`,`Year`,`Loc.`,`Sale Price`,`Serial No.`,`Stock No.`,`Tag No.`,`Comments`,`Description` FROM ag_tractor WHERE Status='IN' or Status='OF')
)
)";
?>
下面是我收到的錯誤:
因爲無法執行查詢:你在你的SQL有一個錯誤句法; 檢查對應於你的MySQL服務器版本使用附近的 正確的語法手冊「INSERT INTO search_20121215094411(ID, 型號,廠名,年份,
Loc.
,'」在列14
我只能猜測它是與這些由之前程序員設定,而不是我可以做任何改變他們的非常規列名(LOC,銷售價格等)。
您是否使用舊的'mysql_query()'API?對於較舊的驅動程序,它不支持在單個查詢調用中使用多個語句,必須先執行CREATE TABLE,然後執行INSERT –