是否可以使用Phing执行MySQL查询并将值设置为属性?

时间:2012-12-13 10:03:58

标签: mysql phing

我是Phing的新手。

我想在MySQL数据库表中查询一个值,并将值设置为属性,以便我可以很好地将其回显到屏幕上。

我可以看到有一个PDOSQLExecTask允许我运行一些SQL,但是我看不到如何将返回值设置为属性?

我想要运行的查询是: SELECT MAX(change_number) 来自changelog;

我希望它成为一个属性:

有人可以放任何光吗?

谢谢, 克里斯

2 个答案:

答案 0 :(得分:2)

我可以在命令行访问MySQL,我使用了以下解决方案。我敢肯定这不是最好的,如果有人可以改进它,请做!

            <!-- What's the latest delta that's been applied to this deployment? -->
    <exec
        command="${progs.mysql} -h${db.host} -u${db.user} -p${db.pass} -e 'USE ${db.main_db}; SELECT MAX(`change_number`) FROM `changelog`;'"
        dir="."
        checkreturn="false"
        passthru="false"
        outputProperty="latest_version_output"
    />
    <php expression="preg_replace('/[^0-9]|\r|\n/si', '', '${latest_version_output}');" returnProperty="latest_version_applied" />
    <echo msg="Latest delta applied was: ${latest_version_applied}" />

答案 1 :(得分:1)

PDOSQLExecTask附带两个默认格式化程序,它们将输出发送到文件。要改变这种情况,您可能必须实现自己的格式化程序。另一方面,该任务似乎是从带有SQL命令的单独文件读取其SQL命令,而不是构建文件。

总的来说,在我看来,你可能更喜欢编写自己的任务,可能使用PDOSQLExecTask实现中的一些代码,但使用自己的命令输入和结果输出。除非调用mysql命令行二进制文件是您的替代选择,在这种情况下,您可以使用ExecTaskoutputProperty属性将其输出重定向到属性。