我已经尝试了几个小时将行数据存储到BASH var中,然后使用它启动一些PHP脚本。
到目前为止,我只能回显出整个结果集。我已经破坏了这个脚本,所以我甚至不能在这里粘贴它。这就是我所拥有的,这根本不起作用。
#! bin/bash
query=`echo "SELECT id FROM searches WHERE running=1 AND id_user=2" | mysql -u root`我以前从来没有用过BASH,所以我完全迷路了。
我需要的是一些资源,这些资源可以告诉我如何连接到mysql,然后使用该行中的数据遍历结果集。
谢谢。
发布于 2012-08-25 09:01:55
您可以使用while read将mysql --silent输出读取到Bash vars中
>sql="SELECT id FROM searches WHERE running=1 AND id_user=2"
>mysql --silent -u ctrahey test -e "$sql" |while read myid; do
php -f my_processor.php $myid;
done
>备注:
sql="...设置sql的Bash变量(实际上不是必需的,只是辅助readability)mysql -e STDINmysql --silent选项允许您传入查询,因此您不需要-e -e会抑制mysql通常所做的额外格式化。在我的测试中,这实际上也是不必要的(输出中的管道字符没有弄乱Bash)php -f ..这将执行一个php文件,将当前的id作为arg.传递。
发布于 2012-08-25 08:50:19
Bash不是一种与mysql交互的好语言,它只适用于非常非常简单的情况。使用php代替(因为你提到了php),它有一个与mysql数据库交互的api。是的,您可以像run a php script脚本一样使用bash。
发布于 2012-08-25 08:59:10
如果要使用MySQL运行单个命令,请使用mysql -e或mysql --execute。它们是相同的命令,但第二个版本更令人难忘。如果您将此标志添加到上面的标记中,则行将存储在变量中。
然而,正如geirha所提到的,BASH可能不是获取行数据的最佳语言。但是,如果您选择解析它,那么mysql -e是执行查询的正确命令。
https://stackoverflow.com/questions/12118243
复制相似问题