Php 带算术的SQL查询

Php 带算术的SQL查询,php,sql,mysqli,Php,Sql,Mysqli,我正在处理一个查询,得到了这个错误 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 ((

我正在处理一个查询,得到了这个错误

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)');
$result=mysqli_query($con,'SELECT*FROM location of WHERE((320000*ABS(SQRT(SQRT(xCoor-“.”.$”POST['latitude'])))+SQUARE(yCoor-“.”.$”POST['longitude'.'))<50');

非常感谢您的第二双眼睛!

您的查询在语法上是错误的:您可能应该这样写(不需要单引号):

$rs=mysqli\u query($con,“从位置选择*”(320000*ABS(SQRT(正方形(xCoor-“$\u POST['latitude']))”)+SQUARE(yCoor-“$\u POST['longitude'])<50)”;
当然$\u POST['latitude']和$\u POST['longitude']必须是数字

您还应该添加正在使用的mysqli_fetch_数组代码,因为您提供的代码不会产生这样的错误…:-)

一般来说,$result(一个结果集)应该传递给mysqli\u fetch\u array()

$rs=mysqli\u query($con,“从位置选择*”(320000*ABS(SQRT(正方形(xCoor-“$\u POST['latitude']))”)+SQUARE(yCoor-“$\u POST['longitude'])<50)”;
如果(!$rs){
die(mysqli_error());
}
而($row=mysqli\u fetch\u数组($rs,mysqli\u两者)){
$field1=$row[“field1”];
...
}

如果(!$result){die(mysqli_error($con));}
永远不要假设MySQL查询有效。总是检查错误。如果你正在使用的教程没有告诉你使用
mysqli\u error
,那么它是错误的。它是从命令行/phpmyadmin工作的吗?完整的字符串看起来像什么?sql注入。我不想太刻薄,但是如果你用谷歌搜索的话“期望参数1是mysqli_result,给定布尔值”,您将在帮助中找到大量帖子。@Chitowns24-如果您回显查询并在数据库中运行它;或者使用
mysqli_error()
,则数据库将准确显示语法错误的位置。(@Chitowns24-值得一提的是,你的查询中有一个未闭合的括号)谢谢,有一个语法错误,我发现了。mysql中也没有平方函数,所以我会自己解决
$rs = mysqli_query($con, "SELECT * FROM location WHERE ((320000 * ABS(SQRT(SQUARE(xCoor - " . $_POST['latitude'] . ") + SQUARE(yCoor - " . $_POST['longitude'] . " ))) < 50)");
$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"];
     ...
}