2013-03-20 63 views
0

如何在LIKE子句中使用var?mySQL - 类似子句中的变量

下面的代码不发送正确响应......

$query = sprintf(" 
SELECT 
place.ID AS id, 

IF(
    place.translationID IS NULL, 
    place.name, 
    placel10n.text 
    ) AS cityname, 

FROM 
places AS place 

LEFT JOIN `l10n-strings` AS placel10n ON (place.translationID = placel10n.translationID AND placel10n.languageCode = 'de') 

WHERE 
place.name LIKE CONCAT('$fchar', '%'); 
AND 
place.`status` = '1' 

"); 
+0

什么是查询时您打印?它是否正确打断? – Lighthart 2013-03-20 20:26:54

+0

你为什么使用'sprintf',因为你没有传入值来插入字符串? – 2013-03-20 20:38:45

回答

0

你不喜欢这样,如果$fchar包含字符串,您要搜索:

$sql = " 
SELECT 
place.ID AS id, 

IF(
    place.translationID IS NULL, 
    place.name, 
    placel10n.text 
    ) AS cityname, 

FROM 
places AS place 

LEFT JOIN `l10n-strings` AS placel10n ON (place.translationID = placel10n.translationID AND placel10n.languageCode = 'de') 

WHERE 
place.name LIKE CONCAT('%s', '%'); 
AND 
place.`status` = '1'"; 

$query = sprintf($sql,$fchar); 

所以,如果$fchar = 'apple',那么你的查询将会尝试匹配'apple%'。

0

想想你可以做

LIKE '$fchar%'; 

或者用事先准备好的声明中(但并不清楚你想要的sprintf的用法是什么)

place.name LIKE :fchar; 

$fchar = $fchar'.'%'; 

$something->bindParam(':fchar', $fchar, PDO::PARAM_STR); 
+0

最后有一些mysql_real_escape_string – Bob 2013-03-20 20:43:39