2013-03-22 46 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