1

次のような文字列があります。

"count( IF (my_id = 'mykey',value,100)) mykey"

ただし、my_id の直後にある値 'mykey' は $which_value という変数にあります。

$which_value を配置して、一重引用符で囲む方法がわかりません。

4

4 に答える 4

3

文字列内に変数を追加するだけです:

"count( IF (my_id = '$which_value',value,100)) mykey"

ただし、値を適切にエスケープするか、準備済みステートメントを使用する必要があります。

$stmt = $db->prepare("SELECT count(IF (my_id = :my_value, value, 100)) mykey...");

$stmt->execute(array(
    ':my_value' => $which_value,
));

または、単純なmysql_関数を使用して:

$sql = sprintf("SELECT count(IF(my_id = '%s', value, 100)) mykey...", 
    mysql_real_escape_string($which_value)
);
mysql_query($sql);
于 2013-01-17T14:08:01.960 に答える
0

二重引用符内の変数が解析されます。次のように変数を使用するだけの便利で簡単な方法があります。

"count( IF (my_id = '$which_value',value,100)) mykey"

より複雑な式は、次のように中括弧で囲むことができます。

"count( IF (my_id = '{$an_array[3]}',value,100)) mykey"

変数文字列をエスケープして、作成中の文字列が壊れたり、悪用されたりしないようにすることも検討してください。ID が整数の場合、変数を整数として型キャストすることができます。

"count( IF (my_id = '" . (int)$which_value . ',value,100)) mykey"

または、sprintf 関数を使用して変数を文字列に挿入します。

sprintf("count( IF (my_id = '%d',value,100)) mykey", $which_value)

テキスト文字列をエスケープする必要がある場合は、クエリを作成しているデータベースに固有のエスケープ関数を確認する必要があります。

于 2013-01-17T14:24:16.317 に答える
0

このような二重引用符で囲まれた文字列で変数をいつでも使用できます

"count( IF (my_id = '{$mykey}',value,100)) {$mykey}"
于 2013-01-17T14:10:04.773 に答える
0

文字列に変数を含めるには、次のことができます

"count( IF(my_id = '" . $which_value . "',value,100)) mykey"

あなたが探しているものを正確に理解するのは非常に難しいですが、これはあなたを正しい方向に向けるはずです(願っています)

于 2013-01-17T14:06:37.480 に答える