单引号,双引号字符串中的变量值

时间:2013-01-17 14:04:11

标签: php string double-quotes quote

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

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

但是,my_id之后的值'mykey'位于名为$ which_value的变量中;

我没有看到如何放置$ which_value以便它保留围绕它的单引号。

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

要在变量中包含变量

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

很难弄清楚你究竟在找什么,但这应该指出你正确的方向(我希望)

答案 2 :(得分:0)

您可以随时在双引号字符串中使用您的变量,例如

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

答案 3 :(得分: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)

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