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"];
     ...
}
Другие вопросы по тегам