我有一張數百列的表格。表格結構不在我的控制之下(由第三方控制)。該表還有可怕的字段名稱,空格,單引號等等,表值也是如此。該表通過cron每小時更新一次。 cron作業每次都會截斷並重建表。我還保留該表的歸檔表,我使用REPLACE INTO語句根據需要更新或插入。mysql更換成數百列的表格
我的挑戰 - 我不想明確定義所有350個字段名稱和值,並且在我的REPLACE INTO語句中再次這樣做,因爲這將花費很長時間,並且如果表更改將需要維護。我寧願使用數組。這裏是沒有工作,但希望給予的目標的想法(我知道這是不推薦使用MySQL,但它是什麼它是多種原因):
$listings = mysql_query("SELECT * FROM current.table");
while ($listing = mysql_fetch_assoc($listings)){
//prepare variables
$fields = array_keys($listing);
$fields = implode('`, `', $fields);
$fields = "`$fields`";
$values = array_values($listing);
$values = implode("`, `", $values);
$values = "`$values`";
mysql_query('REPLACE INTO archive.table ($fields) VALUES ($values)');
}
定義 '不工作'。你有沒有發現問題在哪個階段發生? – Utkanos
在查詢中使用'mysql_error()'。你發佈的內容似乎是合法代碼,但是值需要引用'''並且爲了可能的注入而逃脫,而不是打勾''''。而對第二個查詢的封裝使用''''''mysql_query(「REPLACE INTO archive.table($ fields)VALUES($ values)」);' –
爲什麼不使用'DROP TABLE archive.table; CREATE TABLE archive。 table LIKE current.table; INSERT INTO archive.table SELECT * FROM current.table'? – eithed