2013-03-22 45 views
2

我有時會在其中有$ title返回引號。是否有bash mysql插入單個qoute

  1. 任何適當的方式保持它,而插入或
  2. 只是簡單地刪除它,所以它不會踢回錯誤?

    echo「INSERT INTO $ SQL_DATABASE。$ SQL_TABLE SET $ SQL_FILENAME_FIELD ='$ OUTPUTFILENAME',title ='$ title',url ='$ OUTPUTFILENAME',cover ='$ OUTPUTFILENAME.jpg',server ='s2' ,dateadd = now(),lastplayed = now() - interval 2 day,record ='1000',channel ='2',downloaded ='1'; \ | MySQL的-h $ SQL_HOST -u $ SQL_USERNAME -p $ SQL_PASSWORD $ SQL_DATABASE

回答

1

tr命令在這裏用來刪除標題「文字。

title=$(echo $title | tr -d "'") 

要僅輸出字母數字字符,-cd選項將刪除所有非字母數字的字符。

title=$(echo $title | tr -cd "[:alnum:]") 
+0

我們可以讓這個刪除所有奇怪的人物呢?也許只能保留字母和數字? – thevoipman 2013-03-22 09:38:56

+0

是 - 查看更新後的答案。 – suspectus 2013-03-22 09:46:26

+0

太棒了!謝謝! – thevoipman 2013-03-22 09:49:48

2

爲了讓你需要逃出他們的報價,而不是使用$標題中使用這個代替:

${title//\'/\'\'} 

這將改變 It's a beautiful dayIt''s a beautiful day

以下是完整的命令行:

echo "INSERT INTO $SQL_DATABASE.$SQL_TABLE SET $SQL_FILENAME_FIELD='$OUTPUTFILENAME', title='"${title//\'/\'\'}"', url='$OUTPUTFILENAME', cover='$OUTPUTFILENAME.jpg', server='s2', dateadd=now(), lastplayed=now()-interval 2 day, record='1000', channel='2', downloaded='1';" 
+0

我真的不知道如何使用這個 - 甚至認爲我很樂意在db中存儲引號,所以當我將它拉出來時,它看起來更好... – thevoipman 2013-03-22 09:37:51

+0

我將完整的命令行添加到我的響應中。 – Taoufix 2013-03-22 10:03:48

+0

@thevoipman:Brace擴展是強大的東西,你應該學習它。 – Zulu 2013-03-22 10:58:40