我有一个字符串,看起来像这样:
"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)
如果您需要转义文本字符串,那么您将需要查看特定于您正在构建查询的数据库的转义函数。