Не уверен, что я неправильно закодировал это или просто потому, что у меня очень большая база данных, из которой я пытаюсь получить информацию.
Я не получаю никаких ошибок, но на странице ничего не отображается. Имеет проблему с большой базой данных, которая может помешать мне найти результат. Я знаю, что почтовый индекс находится в базе данных, как я нашел в 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
поэтому я пытаюсь учиться, но когда это не дает мне никаких ошибок, это очень затрудняет поиск того, что я ищу.
большое спасибо
— Джонни Домметт
РЕДАКТИРОВАТЬ — Схема таблицы
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) { }
РЕДАКТИРОВАТЬ — 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"}
}
Вывод является примером случайных данных, которые я вставил в свою базу данных.
Важная заметка : этот код использует подготовленное утверждение. Вы используете переменную в своем запросе, поэтому, пожалуйста, используйте подготовленный оператор, чтобы избежать внедрения SQL.
В этом коде я установил $location
статическое значение, чтобы убедиться, что предоставленный код работает.
Других решений пока нет …