Почему следующий оператор SELECT должен возвращать инструкцию else? и пустое эхо $ широты и $ долготы
$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 и $ longitude с фактическими значениями из формы (lat & long) успешно заменяют правильные значения $ latitude и $ longitude, доказывая, что значения в форме (lat & long) корректно анализируются через 2 переменные.
Использование $ latitude & $ longitude в выражении SELECT ломает его, и я не понимаю, почему.
Спасибо за вашу помощь. Ян.
ФОРМА ДЕТАЛИ
<form action="scanBoard.php" method="post" name="scanBoard" >
<input type="text" id="lat" value="52.562292" /><br>
<input type="text" id="long" value="-0.660871" /><br>
<div id="boardBtn" class="blink"><input class="button" type="image" src="img/boardBtn.png" ></div></form>
* Значения были добавлены к входам для тестирования и будут удалены после устранения этой проблемы.
ИСПОЛЬЗОВАНИЕ $ latitude AND $ longitude в инструкции SELECT.
ИСПОЛЬЗОВАНИЕ 52.562292 И -0.660871 в инструкции SELECT.
Всегда создавайте запрос для предотвращения 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"];
Ваш запрос должен быть
$sql = "SELECT id, agent_name, address, url, latitude, longitude FROM enabled_boards WHERE latitude='" . $latitude. "' AND longitude='". $longitude ."'";
lat
long
значений