1

以下に示すように選択ステートメントが機能しています

$test = $pdo->query('Select col1, SUM(col2), SUM(col3), SUM(col3)*SUM(col2) from table group by col1');

col2 の合計を掛けたいので、この行が機能しています

$test = $pdo->query('Select col1, SUM(col2)*100, SUM(col3), SUM(col3)*SUM(col2) from table group by col1');

ただし、ユーザーがフォームで数値を定義できるようにしたいと考えています。フォームが機能しており、以下に示すように変数を作成しました。

$custom = ($_POST['custom']);

しかし、select ステートメントに $custom を入れようとすると、エラーが発生します。ここでいくつかの異なることを試しましたが、結果が得られないようです。以下のようなものがうまくいくかもしれないと思ったのですが、うまくいきませんか?これを処理する最善の方法は何ですか?

$test = $pdo->query('Select col1, SUM(col2)*'$custom', SUM(col3), SUM(col3)*SUM(col2) from table group by col1');
4

2 に答える 2

2

あなたの最善の策は、準備されたステートメントを使用してパラメーターを渡すことです。ただし、列リストでは準備済みステートメントのパラメーターを使用できないため、代わりに値を引用する必要があります。

$test = $pdo->query('
    Select 
        col1, 
        SUM(col2)*' . $pdo -> quote ($_POST ['custom']) . ', 
        SUM(col3), 
        SUM(col3)*SUM(col2) 
    from table 
    group by col1');

$_POST が数値であることも確認する必要があります。空白または乗算できないものである場合、クエリは引き続き失敗するためです。このようにできます。

$custom = $_POST ['custom'] * 1;
$test = $pdo->query('
    Select 
        col1, 
        SUM(col2)*' . $pdo -> quote ($custom) . ', 
        SUM(col3), 
        SUM(col3)*SUM(col2) 
    from table 
    group by col1');
于 2012-07-29T10:28:19.077 に答える
1

以下のように数値に変換して、これを試してください

$custom = $_POST ['custom'] * 1;
$test = $pdo->query('Select col1, SUM(col2)*' . $custom . ', SUM(col3), SUM(col3)*SUM(col2) from table group by col1');
于 2012-07-29T10:32:27.130 に答える