Php 双引号字符串中具有可变值的单引号
我有一个字符串如下所示:Php 双引号字符串中具有可变值的单引号,php,string,double-quotes,quote,Php,String,Double Quotes,Quote,我有一个字符串如下所示: "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" 但是,紧跟在my_id之后的值“mykey”位于名为$which_value的变量中 我看不出如何将$which_值放在一起,使其包含一个引号。要在字符串
"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"
但是,紧跟在my_id之后的值“mykey”位于名为$which_value的变量中
我看不出如何将$which_值放在一起,使其包含一个引号。要在字符串中包含一个变量,您可以这样做
"count( IF(my_id = '" . $which_value . "',value,100)) mykey"
很难弄清楚您到底在寻找什么,但这应该会为您指明正确的方向(我希望)只需在字符串中添加变量:
"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,
));
或者,使用普通的ol'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 = '{$mykey}',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"
更复杂的表达式可以用花括号括起来,如下所示:
"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)
如果需要转义文本字符串,则需要查看特定于正在构造查询的数据库的转义函数 你的意思是像“
”count(如果(my_id=”“$which_value.”,value,100))mykey“
”这样的东西吗?希望他使用PDO来使用绑定解决方案:)