$ variable在SELECT中不起作用

时间:2015-06-03 11:52:20

标签: php mysqli

为什么以下SELECT语句会返回else语句?和$ latitude和$经度的空白回声

 SELECT CONVERT(date, UC.USGDATE) as USGDATE, SG.DESCRIPTION, SG.SERVICEGRP
 FROM APP_SYUTILITYCHARGES UC LEFT OUTER JOIN
      TX_MYSERVICEITEM SI
      ON SI.SERVICEITEMID = UC.SERVICEITEMID LEFT OUTER JOIN
      TX_MYSERVICE MS
      ON MS.SERVICEID = SI.SERVICEID LEFT OUTER JOIN
      TX_SERVICEGROUP SG
      ON SG.SERVICEGRP = MS.SERVICEGRP
 WHERE UC.STAYID = @STAYID
 GROUP BY SG.SERVICEGRP, CONVERT(date, UC.USGDATE), SG.DESCRIPTION 

将$ latitude和$ longitude的SELECT语句值替换为表单(lat& long)中的实际值,然后正确地回显了$ latitude和$ longitude,证明了表单中的值(lat& long)通过2个变量正确解析。

使用$ latitude& SELECT语句中的$ longitude打破了它,我不明白为什么。

感谢您的帮助。 伊恩。

表格详情

$latitude = $_GET["lat"];
$longitude = $_GET["long"];
$pScan="";
$sql = "SELECT id, agent_name, address, url, latitude, longitude FROM enabled_boards WHERE latitude='$latitude' AND longitude='$longitude' ";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {
        $id=$row["id"];
        $agent=$row["agent_name"];
        $address=$row["address"];
        $url=$row["url"];
        $latitude=$row["latitude"];
        $longitude=$row["longitude"];
        $pScan.='  <div id="wrapper">
        <a href="propertyDisp.php?id=' . $id . '" target="_self" >
  <div id="agentIdent"><img src="http://arpad.property/logos/' . $agent . '.jpg"></div>
  <div id="propertyIdent"><h3 align="right">' . $address . '</h3></div>
    </div></a>'; 

    }
}else{
$pScan="No results found,<br>please ensure the property is Arpad Enabled.";
}

*这些值已添加到输入中以进行测试,一旦解决此问题,我们将删除这些值。

在SELECT语句中使用$ latitude AND $ longitude。

incorrect

在SELECT语句中使用52.562292 AND -0.660871。

enter image description here

2 个答案:

答案 0 :(得分:1)

您的查询必须是

$sql = "SELECT id, agent_name, address, url, latitude, longitude FROM enabled_boards WHERE latitude='" . $latitude. "' AND longitude='". $longitude ."'";

答案 1 :(得分:1)

始终创建查询以阻止sql injection。列名和表名在backtick中。

 $sql = "SELECT `id`, `agent_name`, `address`, `url`, `latitude`, `longitude` FROM `enabled_boards` WHERE `latitude`='".$latitude."' AND `longitude`='".$longitude."' ";

始终使用mysqli_connect_errno检查查询中的错误

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

<强>更新

forget

中的form name input field
<input type="text" id="lat" value="52.562292" />
<input type="text" id="long" value="-0.660871" />

这将是

 <input type="text" id="lat" value="52.562292" name="lat" />
 <input type="text" id="long" value="-0.660871" name="long" />

而不是GET方法

$latitude = $_GET["lat"];
$longitude = $_GET["long"];

使用POST方法因为您使用method="post"所以它将是

$latitude = $_POST["lat"];
$longitude = $_POST["long"];