PHP和Mysql没有回应我的变量

时间:2018-08-16 09:21:28

标签: php mysql echo large-data postal-code

不确定我的编码是否错误,或者仅仅是因为我有一个非常大的数据库试图从中提取。

我没有收到任何错误,但是页面上没有任何显示。数据库很大,可能会导致我无法找到结果。我知道邮政编码在数据库中,就像我在PHPMYADMIN SQL标签中找到的那样。

<?php

$location = $user['location'];

$postcode = DB::query("SELECT * FROM postcodes WHERE Postcode LIKE '%" . $location . "%'");

$longitude = $postcode['Longitude'];

echo $longitude;

?>

我从已经加载的查询中获取$user['location'],并且页面上的echo显示了页面上的邮政编码。

我对PHPMYSQL并不陌生,所以我想学习,但是当它没有给我任何错误时,将很难找到我要寻找的东西。 / p>

非常感谢    -乔尼·多米特(Jonny Dommett)

编辑-表架构

id          int(11)         NO      PRI     NULL    auto_increment  
Postcode    varchar(8)      NO              NULL        
Latitude    decimal(9,6)    NO              NULL        
Longitude   decimal(9,6)    NO              NULL        

编辑-PDO

    <?php
  class DB{

    private static function connect(){
      $pdo = new PDO('mysql:host=localhost;dbname=vapoural_wsc;charset=utf8','testing','testing123');
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      return $pdo;

    }
    public static function query($query, $params = array()){
      $statement = self::connect()->prepare($query);
      $statement->execute($params);


   if (explode(' ', $query)[0] == 'SELECT') {
  $data = $statement-> fetchAll();
  return $data;
}

    }
  }

 ?>

编辑-VAR DUMP

var_dump($postcode);

产生了

的结果

array(0) { }

编辑-PHP MYADMIN中的SQL

enter image description here

编辑-问题=已修复

问题出在我的数据库中,有关我输入数据的位置。确保通过执行VARDUMP检查列,然后首先查看结果。

1 个答案:

答案 0 :(得分:1)

您的错误是由于变量$longitude/$logitude和数组键Logitude中的错字引起的。

这是在我的机器上测试过的有效代码。

<?php
class DB{
    private static function connect(){
      $pdo = new PDO('mysql:host=localhost;dbname=vapoural_wsc;charset=utf8','testing','testing123');
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      return $pdo;

    }
    public static function query($query, $params = array()){
      $statement = self::connect()->prepare($query);
      $statement->execute($params);
      if (explode(' ', $query)[0] == 'SELECT') {
          $data = $statement-> fetchAll();
          return $data;
      }
    }
}


$location = '4200';
$query = "SELECT * FROM postcodes WHERE Postcode LIKE ?";
var_dump(DB::query($query, ['%'.$location.'%']));

输出:

array(1) {
[0]=>
array(8) {
  ["id"]=>
  string(1) "1"
  [0]=>
  string(1) "1"
  ["Postcode"]=>
  string(5) "42000"
  [1]=>
  string(5) "42000"
  ["Latitude"]=>
  string(4) "2344"
  [2]=>
  string(4) "2344"
  ["Longitude"]=>
  string(4) "2334"
  [3]=>
  string(4) "2334"
  }
}

输出是我在数据库中插入的随机数据的示例。

  

重要提示:此代码使用准备好的语句。您在查询中使用的是变量,因此请使用准备好的语句以避免SQL注入。

在此代码中,我将$location设置为静态值,以确保所提供的代码有效。