4

変数を設定して select ステートメントで使用しようとすると問題が発生します。「一般的なエラー」が発生し続け、何が間違っているのかわかりません。任意の入力をいただければ幸いです。名前付きパラメーターを持つサブクエリを使用して変数を設定しようとしています。

$query = $dbh->prepare("Set @available = (SELECT SUM(payments) FROM payments WHERE customer = :customer) - (SELECT SUM(charges) FROM charges WHERE customer = :customer); SELECT @available");
$query->bindParam(":customer", $customer);
$query->execute();
4

2 に答える 2

0

PDO は、マルチクエリの正式なサポートを提供していないようですが (ただし、一部のサポートは利用できるようです)、提供mysqliしています。ただし、どちらも準備された複数のステートメントをサポートしていません。

mysqli次のように使用できます。

$mysqli = new mysqli('servername', 'username', 'password', 'dbname');
$query = sprintf("Set @available = (SELECT SUM(payments) FROM payments WHERE customer = %1$s)" .
            " - (SELECT SUM(charges) FROM charges WHERE customer = %1$s);".
            " SELECT @available",
            $mysqli->real_escape_string($customer) );

 // Following code lifted from PHP Manual.
 // This code will read multiple results, if they're available.
 // Your query only returns one.

 /* execute multi query */
 if ($mysqli->multi_query($query)) {
    do {
        /* store first result set */
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }
            $result->free();
        }
        /* print divider */
        if ($mysqli->more_results()) {
            printf("-----------------\n");
        }
    } while ($mysqli->next_result());
}

リファレンスはこちら

于 2013-11-07T01:11:42.923 に答える