我是Phing的新手。
我想在MySQL数据库表中查询一个值,并将值设置为属性,以便我可以很好地将其回显到屏幕上。
我可以看到有一个PDOSQLExecTask允许我运行一些SQL,但是我看不到如何将返回值设置为属性?
我想要运行的查询是:
SELECT MAX(change_number
)
来自changelog
;
我希望它成为一个属性:
有人可以放任何光吗?
谢谢, 克里斯
答案 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命令行二进制文件是您的替代选择,在这种情况下,您可以使用ExecTask
的outputProperty
属性将其输出重定向到属性。