0

我已经尝试了几个小时将行数据存储到 BASH var 中,然后使用它来启动一些 PHP 脚本。

到目前为止,我只能回显整个结果集。我已经破坏了那个脚本,所以我什至不能把它粘贴到这里。这就是我所拥有的,根本不起作用。

#! bin/bash
query=`echo "SELECT id FROM searches WHERE running=1 AND id_user=2" | mysql -u root`

我以前从未使用过 BASH,所以我完全迷路了。

我要的是一些资源,可以告诉我如何连接到 mysql,然后使用该行中的数据循环遍历结果集。

谢谢。

4

3 回答 3

2

您可以使用以下命令将mysql --silent输出读入 Bash var while read

>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 变量(实际上不是必需的,只是帮助可读性)
  • mysql -e-e 选项允许您传入查询,因此您不需要 STDIN
  • mysql --silent--silent 抑制 mysql 通常会进行的额外格式化。在我的测试中,这实际上也是不必要的(输出中的管道字符并没有弄乱 Bash)
  • php -f ..这将执行一个 php 文件,将当前 id 作为 arg 传递。
于 2012-08-25T01:01:55.303 回答
0

Bash 不是与 mysql 交互的好语言,它只适用于非常非常简单的情况。改用php(因为你提到了php),它有一个用于与mysql数据库进行交互的api。是的,您可以像运行bash 脚本一样运行 php脚本。

于 2012-08-25T00:50:18.877 回答
0

如果要使用 MySQL 运行单个命令,请使用mysql -emysql --execute。它们是相同的命令,但第二个版本更令人难忘。如果将此标志添加到上面,则行将存储在变量中。

但是,正如geirha 所说,BASH 可能不是获取行数据的最佳语言。但是如果你选择解析它希望 BASH,mysql -e是正确的命令来执行查询。

于 2012-08-25T00:59:10.420 回答