想要使用变量更新mysql数据库中的值

时间:2014-04-20 09:27:52

标签: mysql shell

在shell程序中,我使用下面的命令将数据库值存储在名为“app”的变量中。

app=$(mysql -uroot -p123456 -e 'SELECT applicant FROM `leave` where status="Applied" and applying_date= curdate() order by applying_date' comviva|tail -1);

现在我想使用此应用程序值更新字段。

mysql -uroot -p123456 -e 'update `leave` set status="pending" where applicant=$app' comviva;

但它不起作用。你能告诉我有什么不对吗?

2 个答案:

答案 0 :(得分:0)

这是一个非常糟糕的主意,绝不应该在生产代码中使用

mysql -uroot -p123456 -e "update leave set status=\"pending\" where applicant=\"$app\"" comviva
  1. 如果你不知道价值是什么,你需要来逃避它,否则Bobby Tables会毁了你的一天。
  2. 在Bash中逃避MySQL值将远非微不足道。即使quoting也可能是一种绝对的痛苦。
  3. 如果您需要循环申请人列表或从shell输入接收申请人,那么您最好 更好地使用Python,Ruby,Java或几乎所有语言< em> not 实际支持参数化查询
  4. 的shell脚本。

答案 1 :(得分:-1)

试试这个

mysql -uroot -p123456 -e "update leave set status=\"pending\" where applicant=\"$app\"" comviva;

您错过了申请人= $ app

的报价