SQL-запрос с арифметикой
Я работаю над запросом и получаю эту ошибку.
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\getAssets.php on line 19
Я точно знаю, что мой запрос неправильный, и я просто не могу понять, почему. Возможно, это что-то глупое, и я просто слишком долго на это смотрю.
$result = mysqli_query($con,'SELECT * FROM location WHERE ((320000 * ABS(SQRT(SQUARE(xCoor - "' . $_POST['latitude'] .'" ) + SQUARE(yCoor - "' . $_POST['longitude'] .'" ))) < 50)');
Ваша вторая пара глаз очень ценится!
1 ответ
Решение
Ваш запрос синтаксически неверен: вы, вероятно, должны написать его так (без одинарных кавычек):
$rs = mysqli_query($con, "SELECT * FROM location WHERE ((320000 * ABS(SQRT(SQUARE(xCoor - " . $_POST['latitude'] . ") + SQUARE(yCoor - " . $_POST['longitude'] . " ))) < 50)");
Конечно, $_POST['latitude'] и $_POST['longitude'] ДОЛЖНЫ быть числами...
Вы также должны добавить код mysqli_fetch_array, который вы используете, потому что код, который вы дали, не может вызвать такую ошибку...:-)
Как правило, $result (набор результатов) должен быть передан mysqli_fetch_array() ...
$rs = mysqli_query($con, "SELECT * FROM location WHERE ((320000 * ABS(SQRT(SQUARE(xCoor - " . $_POST['latitude'] . ") + SQUARE(yCoor - " . $_POST['longitude'] . " ))) < 50)");
if (!$rs) {
die(mysqli_error());
}
while ($row = mysqli_fetch_array($rs, MYSQLI_BOTH)) {
$field1 = $row["field1"];
...
}