SQL查询在PHPMyAdmin中运行良好,但在mysql\u查询中不起作用

SQL查询在PHPMyAdmin中运行良好,但在mysql\u查询中不起作用,php,mysql,sql,phpmyadmin,Php,Mysql,Sql,Phpmyadmin,当我使用PHPMyAdmin运行下面的SQL查询时,它工作得非常好,但是当我从网页运行它时,我得到一个错误。我在StackOverflow上四处寻找类似的问题,并尝试了他们的建议,但遗憾的是。。。有人知道为什么它在网页上不起作用吗 输入变量后的SQL查询(示例): 从以下位置选择地点:((69.1*(纬度-51.4700000))*(69.1*(纬度-51.4700000))+((69.1*(经度-5.5528000)*COS(51.4700000/57.3))*(69.1*(经度-5.5528

当我使用PHPMyAdmin运行下面的SQL查询时,它工作得非常好,但是当我从网页运行它时,我得到一个错误。我在StackOverflow上四处寻找类似的问题,并尝试了他们的建议,但遗憾的是。。。有人知道为什么它在网页上不起作用吗

输入变量后的SQL查询(示例):

从以下位置选择地点:((69.1*(纬度-51.4700000))*(69.1*(纬度-51.4700000))+((69.1*(经度-5.5528000)*COS(51.4700000/57.3))*(69.1*(经度-5.5528000)*COS(51.4700000/57.3))<976.5625(69.1*(纬度-51.4700000))*(69.1*(纬度-51.4700000)))+((69.1*(经度-5.5528000)*COS(51.4700000/57.3))*(69.1*(经度-5.5528000)*COS(51.4700000/57.3))ASC
PHP($radius和$start在此之前定义):

$latitude=$start['latitude'];
$longitude=$start['longitude'];
$r=功率($radius,2);
$inrange=“从位置选择地点,其中((69.1*(纬度-$纬度))*(69.1*(纬度-$纬度))+((69.1*(经度-$经度)*COS($latitude/57.3))*(69.1*(经度-$经度)*COS($latitude/57.3))<$r订单商((69.1*(纬度-$纬度))*(69.1*(纬度-$纬度))+($latitude))+(69.1*(经度-$经度)*COS($latitude/57.3))*(69.1*(经度-$经度)*COS($latitude/57.3)))ASC”;
$result=mysql\u query($inrange)或die(mysql\u error());
我收到的错误消息是:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')) * (69.1 * (`latitude` - ))) + ((69.1 * (`longitude` - ) * COS( / 57.3)) * (69' at line 1
更奇怪的是,它起了作用……我把它都写了下来,就像我现在向你们展示它的方式一样,很高兴看到它工作得很好。那是今天早些时候。现在大约一个小时前,我又尝试了一次,但由于某种原因它停止了工作。我真的不记得改变了什么

编辑


谢谢大家。我弄明白了,结果发现我犯了一个愚蠢的错误。今天早些时候它起作用了,因为所有用户都设置了他们的位置。现在,我有几个用户没有这样做,在他们之间循环时,经度和纬度是空的。

从您的错误消息中,看起来像是
$latitude
$longitude
不包含任何值。您可能希望检查
$start
是否正确设置。这是我可以帮助您的全部内容,因为我不知道
$start
是什么以及如何获得它。

从错误消息中,似乎
$latitude
$longitude
不包含任何值。您可能希望检查
$start
是否正确设置。由于我不知道
$start
是什么以及如何获得它,所以我只能帮助您完成这些操作。

如果((isset($start['LATIONE'])和($isset($start['LATIONLYS'])){
if ((isset($start['latitude']))&&(isset($start['longitude']))){
$latitude = $start['latitude'];
$longitude = $start['longitude'];
$r = pow($radius, 2);
$inrange = "SELECT place FROM locations_2 WHERE ((69.1 * (latitude - $latitude)) * (69.1 *    (latitude - $latitude))) + ((69.1 * (longitude - $longitude) * COS($latitude / 57.3)) * (69.1 * (longitude - $longitude) * COS($latitude / 57.3))) < $r ORDER BY ((69.1 * (latitude - $latitude)) * (69.1 * (latitude - $latitude))) + ((69.1 * (longitude - $longitude) * COS($latitude / 57.3)) * (69.1 * (longitude - $longitude) * COS($latitude / 57.3))) ASC";
$result = mysql_query($inrange) or die(mysql_error());

}else
{
echo "error";
}
$latitude=$start['latitude']; $longitude=$start['longitude']; $r=功率($radius,2); $inrange=“从位置选择地点,其中((69.1*(纬度-$纬度))*(69.1*(纬度-$纬度))+((69.1*(经度-$经度)*COS($latitude/57.3))*(69.1*(经度-$经度)*COS($latitude/57.3))<$r订单商((69.1*(纬度-$纬度))*(69.1*(纬度-$纬度))+($latitude))+(69.1*(经度-$经度)*COS($latitude/57.3))*(69.1*(经度-$经度)*COS($latitude/57.3)))ASC”; $result=mysql\u query($inrange)或die(mysql\u error()); }否则 { 回声“错误”; }

将$latitude、$latitude放入查询中的{}

$inrange = "SELECT place FROM locations_2 WHERE ((69.1 * (latitude - {$latitude})) * (69.1 *    (latitude - {$latitude}))) + ((69.1 * (longitude - {$longitude}) * COS({$latitude} / 57.3)) * (69.1 * (longitude - {$longitude}) * COS({$latitude} / 57.3))) < $r ORDER BY ((69.1 * (latitude - {$latitude})) * (69.1 * (latitude - {$latitude}))) + ((69.1 * (longitude - {$longitude}) * COS({$latitude} / 57.3)) * (69.1 * (longitude - {$longitude}) * COS($latitude / 57.3))) ASC";
$inrange=“从位置2中选择地点,其中((69.1*(纬度-{$latitude}))*(69.1*(纬度-{$latitude}))+((69.1*(经度-{$latitude})*COS({$latitude}/57.3))*(69.1*(经度-{$latitude})*COS({$latitude}/57.3))<$r顺序按((69.1*(纬度-{$latitude}))*(纬度-{$latitude}])+((69.1*(经度-{$经度})*COS({$经度}/57.3))*(69.1*(经度-{$经度})*COS($经度/57.3)))ASC”;
if((isset($start['LATIONE'])和&(isset($start['LATIONE'])){
$latitude=$start['latitude'];
$longitude=$start['longitude'];
$r=功率($radius,2);
$inrange=“从位置选择地点,其中((69.1*(纬度-$纬度))*(69.1*(纬度-$纬度))+((69.1*(经度-$经度)*COS($latitude/57.3))*(69.1*(经度-$经度)*COS($latitude/57.3))<$r订单商((69.1*(纬度-$纬度))*(69.1*(纬度-$纬度))+($latitude))+(69.1*(经度-$经度)*COS($latitude/57.3))*(69.1*(经度-$经度)*COS($latitude/57.3)))ASC”;
$result=mysql\u query($inrange)或die(mysql\u error());
}否则
{
回声“错误”;
}

将$latitude、$latitude放入查询中的{}

$inrange = "SELECT place FROM locations_2 WHERE ((69.1 * (latitude - {$latitude})) * (69.1 *    (latitude - {$latitude}))) + ((69.1 * (longitude - {$longitude}) * COS({$latitude} / 57.3)) * (69.1 * (longitude - {$longitude}) * COS({$latitude} / 57.3))) < $r ORDER BY ((69.1 * (latitude - {$latitude})) * (69.1 * (latitude - {$latitude}))) + ((69.1 * (longitude - {$longitude}) * COS({$latitude} / 57.3)) * (69.1 * (longitude - {$longitude}) * COS($latitude / 57.3))) ASC";
$inrange=“从位置2中选择地点,其中((69.1*(纬度-{$latitude}))*(69.1*(纬度-{$latitude}))+((69.1*(经度-{$latitude})*COS({$latitude}/57.3))*(69.1*(经度-{$latitude})*COS({$latitude}/57.3))<$r顺序按((69.1*(纬度-{$latitude}))*(纬度-{$latitude}])+((69.1*(经度-{$经度})*COS({$经度}/57.3))*(69.1*(经度-{$经度})*COS($经度/57.3)))ASC”;

你能回显$latitude和$longitude的值吗?还有-摆脱混乱!做一些类似的事情:
选择地点,((69.1*(latitude-51.4700000))*(69.1*(latitude-51.4700000))+((69.1*(longitude-5.5528000)*COS(51.4700000/57.3))*(69.1*(longitude-5.5528000)*COS(51.4700000/57.3)))作为距离<976.5625的位置的距离,按距离ASC排序
好得多,不减少重复:-)在mysql_查询之前,使用
echo$inrange
echo完整查询以确保“that”在PHPMyAdminLuisSiquot中也有效。这是我显示的第一个SQL查询。这正是我在PHP中使用的$inrange。David Hehe感谢为我清理它!我会的