4

私はPhingが初めてです。

MySQL データベース テーブルの値をクエリし、その値をプロパティとして設定して、画面にうまくエコーできるようにしたいと考えています。

SQL を実行できる PDOSQLExecTask があることがわかりますが、戻り値をプロパティに設定する方法がわかりません。

実行したいクエリは次のとおりです。 SELECT MAX( change_number) FROM changelog;

プロパティに設定したい:

誰でも光を当てることができますか?

ありがとう、クリス

4

2 に答える 2

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}" />
于 2012-12-14T11:18:11.447 に答える
1

にはPDOSQLExecTask、出力をファイルに送信する 2 つのデフォルト フォーマッタが付属しています。これを変更するには、おそらく独自のフォーマッタを実装する必要があります。一方、タスクは、ビルド ファイルではなく、SQL コマンドを含む別のファイルから SQL コマンドを読み取っているように見えます。

PDOSQLExecTaskしたがって、全体として、おそらく実装からのコードを使用して、独自のコマンド入力と結果出力を使用して、独自のタスクを作成する方が良いように思えます。mysql コマンド ライン バイナリを呼び出すことが代替手段である場合を除きoutputPropertyExecTask.

于 2012-12-13T13:31:16.413 に答える