不确定我的编码是否错误,或者仅仅是因为我有一个非常大的数据库试图从中提取。
我没有收到任何错误,但是页面上没有任何显示。数据库很大,可能会导致我无法找到结果。我知道邮政编码在数据库中,就像我在PHPMYADMIN SQL
标签中找到的那样。
<?php
$location = $user['location'];
$postcode = DB::query("SELECT * FROM postcodes WHERE Postcode LIKE '%" . $location . "%'");
$longitude = $postcode['Longitude'];
echo $longitude;
?>
我从已经加载的查询中获取$user['location']
,并且页面上的echo
显示了页面上的邮政编码。
我对PHP
和MYSQL
并不陌生,所以我想学习,但是当它没有给我任何错误时,将很难找到我要寻找的东西。 / 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
编辑-问题=已修复
问题出在我的数据库中,有关我输入数据的位置。确保通过执行VARDUMP检查列,然后首先查看结果。
答案 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
设置为静态值,以确保所提供的代码有效。