无法使用查询值创建数组

时间:2015-06-14 20:10:34

标签: php mysql arrays pdo

我尝试将查询值保存到数组中,但它不会被填充。查询应该提供一些东西,因为数据库中的任何值都可以完成这些条款,并且cookie也具有太多的值。我的错误在哪里?

输出:

  

Array()

    $range = 'range';
  $_COOKIE["$range"];

$longitude = 'longitude';
$_COOKIE["$longitude"];
$latitude = 'latitude';
$_COOKIE["$latitude"];

$onemile = 0.005581257;
$le = $range * $onemile; 
$lo = $longitude + $le;
$loo = $longitude - $le;
$la = $latitude + $le;
$laa = $latitude - $le;


$hostname='localhost';
        $user='root';
        $password='';



                try {
                        $dbh = new PDO("mysql:host=$hostname;dbname=loc",$user,$password);

                        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
                         $sql = "SELECT id, autorid, date, longitude, latitude, title, text 
FROM post 
WHERE  (
    longitude >= $loo and longitude <= $lo
) 
OR (
    latitude >= $laa and latitude <= $la
) 
ORDER BY date";
  if ($res = $dbh->query($sql)) {

     $result = $res->fetchAll();
     print_r($result);

   }


                }
                catch(PDOException $e)
                {
                        echo $e->getMessage();
                }

1 个答案:

答案 0 :(得分:1)

您的变量分配都是错误的。他们应该是:

$range = $_COOKIE["range"];
$longitude = $_COOKIE["longitude"];
$latitude = $_COOKIE["latitude"];

当您尝试将非数字字符串用作算术表达式中的数字时,它将被视为0。所以你的代码的结果是有效的:

$le = 0 * $onemile; 
$lo = 0 + $le;
$loo = 0 - $le;
$la = 0 + $le;
$laa = 0 - $le;

因此您将所有这些变量设置为0