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']
,并且页面上的 echo
s 已经在页面上显示了邮政编码。
我是 PHP
和 MYSQL
的新手,所以我正在努力学习,但是当它没有给我任何错误时,我很难搜索到我要找的东西.
非常感谢
- 乔尼·多米特
编辑 - 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
设置为静态值以确保提供的代码有效。
不确定我是否编码不正确,或者这是否只是因为我有一个非常大的数据库,我正试图从中提取。
我没有收到任何错误,但页面上没有显示任何内容。有一个大型数据库的问题可能会阻止我找到我的结果。我知道邮政编码在数据库中,因为我在 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 已经在页面上显示了邮政编码。
我是 PHP
和 MYSQL
的新手,所以我正在努力学习,但是当它没有给我任何错误时,我很难搜索到我要找的东西.
非常感谢 - 乔尼·多米特
编辑 - 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
设置为静态值以确保提供的代码有效。