PHP 和 Mysql 没有回应我的变量

PHP and Mysql not echoing my variable

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

我没有收到任何错误,但页面上没有显示任何内容。有一个大型数据库的问题可能会阻止我找到我的结果。我知道邮政编码在数据库中,因为我在 PHPMYADMIN SQL 选项卡中找到了它。

<?php

$location = $user['location'];

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

$longitude = $postcode['Longitude'];

echo $longitude;

?>

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

我是 PHPMYSQL 的新手,所以我正在努力学习,但是当它没有给我任何错误时,我很难搜索到我要找的东西.

非常感谢 - 乔尼·多米特

编辑 - Table 架构

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 转储

var_dump($postcode);

产生了

的结果

array(0) { }

编辑 - SQL 在 PHPMYADMIN 中

编辑 - 问题 = 已修复

问题出在我输入数据的数据库中。确保首先通过执行 VARDUMP 检查您的列以查看结果。

您的错误是因为您在变量 $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"
  }
}

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

Important note : this code use a prepared statement. You are using a variable in your query, so please use a prepared statement to avoid SQL injection.

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