2014-12-13 43 views
1

我有1000個HTML時事通訊全部順序編號爲1.txt 2.txt 我正在構建一種新的cms方式供員工編輯,因此我希望將內容存入數據庫(mysql)將html內容從.txt文件插入到mysql

我試圖運行bash腳本

array.. 

for i in "${array[@]}" 

do 

value=`cat ../data/"$i".txt` 

mysql -u$MYUSER -p$MYPASS "cms" -se "UPDATE nl SET site_html = '$value', update_date=TIMESTAMP(NOW()) WHERE sid ='$i' " 

但是HTML似乎要爆炸的更新語句

+0

難道不需要逃脫嗎? – gxtaillon 2014-12-13 06:03:35

+0

我不能逃避$值,因爲它在「」之內「」,除非我可以在將它放入或清理變量或文件之前將所有內容都轉義出來? – user2024994 2014-12-13 06:16:22

+0

在SQL字符串中使用它之前,必須將$ value中的單引號加倍(轉義)。像'$ {value //'/''}'而不是'$ value'。 – gknicker 2014-12-13 06:19:35

回答

0

您必須$value翻倍(逃避)單引號您在SQL字符串中使用它之前:

"UPDATE nl SET site_html = '${value//'/''}', update_date=TIMESTAMP(NOW()) WHERE sid ='$i' " 

否則任何單引號HTML會導致SQL字符串過早終止,這肯定會導致(SQL注入)語法錯誤。

+0

如此接近我幾乎可以聞到燻肉! 第18行:意外的EOF,而尋找匹配的'「' 第21行:語法錯誤:意外的文件結尾 – user2024994 2014-12-13 06:46:52

+0

好吧這是你的bash腳本中的語法錯誤。 /www.google.com/search?sourceid=chrome-psyapi2&ion=1&espv=2&ie=UTF-8&q=unexpected%20EOF%20while%20looking%20for%20matching%20%60),並找到[本文](http:// unix.stackexchange.com/questions/154427/unexpected-eof-while-looking-for-matching-bash-script)這可能有助於完成這隻小狗:) – gknicker 2014-12-13 06:56:37