单引号在双引号字符串中带有变量值


Single quote with variable value in a double quote string

我有一个字符串,看起来像这样:

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

但是,my_id后面的值'mykey'在一个名为$ where_value;

我不知道如何放置$哪个值,以便它周围保持单引号

只需在字符串中添加变量:

"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);

要在字符串中包含变量,可以执行

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

很难弄清楚你到底在找什么,但这应该为你指明正确的方向(我希望)

您始终可以在像这样的双引号字符串中使用变量

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

双引号内的变量将被解析。有一种方便的简单方法,只需像这样使用变量:

"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)

如果您需要转义文本字符串,那么您将需要查看特定于您正在构建查询的数据库的转义函数。