2017-08-11 96 views
1

我想使用两个查询之间使用但当我添加代码之间它不起作用。这是在使用BETWEEN之前为我工作的代码。PHP Mysql Select BETWEEN查询

$result = mysql_query("SELECT name , liking , id , address , description FROM locations WHERE liking LIKE '%{$likeArray[$newCount]}%'"); 

这是BETWEEN不能正常工作的代码。

$result = mysql_query("SELECT name , liking , id , address , description FROM locations WHERE ‘long’ BETWEEN ‘$Slong’ AND ‘$Blong’ AND lat BETWEEN ‘$Slat’ AND ‘$Blat’ AND liking LIKE '%{$likeArray[$newCount]}%'"); 
+0

你需要使用括号来包装你的逻辑 –

+0

@SaadSuri你的意思是围绕两个BETWEEN语句的括号吗? –

+0

是的,你需要评估他们喜欢你想要的结果。 SELECT name,liking,id,address,description FROM WHERE('long'BETWEEN'$ Slong'AND'$ Blong')AND(lat BETWEEN'$ Slat'AND'$ Blat')AND like like LIKE'%{$ likeArray [$ newCount]}%' –

回答

1

这里有几个问题。

首先,我会说,不要使用mysql_ *函数,它们在5.5+中被弃用并在7.0中被移除。你的选择是mysqli_ *函数,或者使用PDO。我更喜欢PDO,但我可以明白为什么使用mysqli_ *会很方便,因为您可以对mysql_执行文本搜索并替换为mysqli_

现在,你的问题。您正在使用后退和前进勾号来处理所有事情,您应该使用后退勾号和单引号标记。列名应在反引号括起来(')和文本应在单引号(')来encolsed,象下面这样:

$result = mysqli_query(
    "SELECT name , liking , id , address , description FROM locations WHERE `long` BETWEEN '$Slong' AND '$Blong' AND `lat` BETWEEN '$Slat' AND '$Blat' AND `liking` LIKE '%{$likeArray[$newCount]}%'" 
); 

编辑:另外,你是大开SQLI(SQL注入) - 使用原产地名称准备好的声明将消除这种威胁。有一个关于使用PHP PDO here的好教程。