首页 > 解决方案 > PHP 和 Mysql 没有回显我的变量

问题描述

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

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

<?php

$location = $user['location'];

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

$longitude = $postcode['Longitude'];

echo $longitude;

?>

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

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

非常感谢——强尼·多米特

编辑 - 表架构

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) { }

编辑 - PHPMYADMIN 中的 SQL

在此处输入图像描述

编辑 - 问题 = 已修复

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

标签: phpmysqlecholarge-datapostal-code

解决方案


您的错误是由于您在变量$longitude/$logitude和数组 key 中的拼写错误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了一个静态值以确保提供的代码有效。


推荐阅读