我是Phing的新手。
我想在 MySQL 数据库表中查询一个值,并将该值设置为一个属性,这样我就可以很好地将它回显到屏幕上。
我可以看到有一个 PDOSQLExecTask 可以让我运行一些 SQL,但是我看不到如何将返回的值设置为属性?
我要运行的查询是: SELECT MAX( change_number
) FROM changelog
;
我想把它设置成一个属性:
任何人都可以解释一下吗?
谢谢,克里斯
我可以在命令行访问 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}" />
它PDOSQLExecTask
带有两个默认的格式化程序,它们会将它们的输出发送到一个文件中。要改变这一点,您可能必须实现自己的格式化程序。另一方面,该任务似乎从带有 SQL 命令的单独文件中读取其 SQL 命令,而不是构建文件。
所以总的来说,在我看来,你可能会更好地编写自己的任务,可能使用来自实现的一些代码,PDOSQLExecTask
但使用你自己的命令输入和结果输出。除非调用 mysql 命令行二进制文件是您的替代方案,在这种情况下,您可以结束该调用以将其输出重定向到outputProperty
使用ExecTask
.