我有一个看起来像这样的字符串:
"count( IF (my_id = 'mykey',value,100)) mykey"
但是,my_id之后的值'mykey'位于名为$ which_value的变量中;
我没有看到如何放置$ which_value以便它保留围绕它的单引号。
答案 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)
如果您需要转义文本字符串,那么您将需要查看特定于您正在构建查询的数据库的转义函数。