php - 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']
从已经加载的查询中获取echo
s,并且页面上的 s 已经在页面上显示了邮政编码。
我很新PHP
,MYSQL
所以我正在努力学习,但是当它没有给我任何错误时,很难搜索我正在寻找的东西。
非常感谢——强尼·多米特
编辑 - 表架构
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 检查您的列,以首先查看结果。
解决方案
您的错误是由于您在变量$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
了一个静态值以确保提供的代码有效。
推荐阅读
- firebase - 当用户在firebase中注销时如何停止监听获取聊天消息
- firebase - 如何在集合中创建自定义文档 - 使用 Flutter 的 Firestore
- java - 为什么我不能使用父方法?(数组列表)
- javascript - How to use bootstrap collapse without affecting other elements?
- vue.js - 悬停在栏上时如何让工具提示跟随光标
- python - 如何在 Pandas 中获取具有数值和分类值的列作为单独的列表?
- python - 使用 DQN 增加 Cartpole-v0 损失
- html - 如何在引导程序 4 中的 box-inner div 中设置全高?
- angular - Angular 路由器保护中的 NgRx 调用调度操作将执行无限循环
- c - 如何在 macOS Mojave 上使用 GNU gprof 分析器?