我使用一些高级的mysql查询来搜索数据库中的一些数据。但是,当我向查询添加LIKE WHERE developer LIKE %Lanterra%
时,它将无效。
工作查询。
$query = sprintf("SELECT *, ( 3959 * acos( cos( radians('%s') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( latitude ) ) ) ) AS distance FROM condo HAVING distance < '%s' ORDER BY distance LIMIT 0 , 2500",
mysql_real_escape_string($center_lat),
mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat),
mysql_real_escape_string($radius));
当我添加LIKE功能时(不工作)
$query = sprintf("SELECT *, ( 3959 * acos( cos( radians('%s') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( latitude ) ) ) ) AS distance FROM condo WHERE developer LIKE %Lanterra% HAVING distance < '%s' ORDER BY distance LIMIT 0 , 2500",
mysql_real_escape_string($center_lat),
mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat),
mysql_real_escape_string($radius));
答案 0 :(得分:4)
SELECT * FROM `table` WHERE myfield like '%abc%';
您必须使用&#39;
答案 1 :(得分:2)
我认为sprintf()
函数不会将sql语句和商店包含在变量中。
尝试这样的事情:
$query = "SELECT *, ( 3959 * acos( cos(
radians('".mysql_real_escape_string($center_lat)."') ) * cos( radians( latitude ) )
* cos( radians( longitude ) - radians('".mysql_real_escape_string($center_lng)."') )
+ sin( radians('".mysql_real_escape_string($center_lat)."') )
* sin( radians( latitude ) ) ) ) AS distance FROM condo
HAVING distance < '".mysql_real_escape_string($radius))."'
ORDER BY distance LIMIT 0 , 2500";
然后您可以执行查询。
但是 BECAREFUL 和mysql_ *。
正如杰伊在评论中所说的那样:
mysqli
with prepared statements或PDO with prepared statements,他们更安全。&#34; 答案 2 :(得分:1)
请注意这个:
$query = sprintf("SELECT * FROM (SELECT *,
( 3959 * acos( cos( radians( %F ) ) * cos( radians( latitude ) ) *
cos( radians( longitude ) - radians( %F ) ) + sin( radians( %F ) ) *
sin( radians( latitude ) ) ) ) AS distance FROM condo WHERE
developer LIKE '%%Lanterra%%') WHERE distance < %F
ORDER BY distance LIMIT 0 , 2500",
floatval($center_lat),
floatval($center_lng),
floatval($center_lat),
floatval($radius)
);
$query = sprintf("SELECT *, ( 3959 * acos( cos( radians( %F ) ) * cos( radians( latitude ) ) *
cos( radians( longitude ) - radians( %F ) ) + sin( radians( %F ) ) *
sin( radians( latitude ) ) ) ) AS distance FROM condo HAVING distance < %F
WHERE developer LIKE '%%Lanterra%%'
ORDER BY distance LIMIT 0 , 2500",
floatval($center_lat),
floatval($center_lng),
floatval($center_lat),
floatval($radius)
);
最好的问候。
答案 3 :(得分:-1)
您可以尝试使用双引号&#34; 我没有使用LIKE关键字。
SELECT * FROM `db`.`table` WHERE `time` LIKE "%20150105%";