Существует так много проблем с кодом, который говорит вам и объясняет все, что вам нужно исправить, потребуется некоторое время, поэтому я перечислил основные и что вам нужно сделать.
Вы не используете обработчик ошибок на всех, вы должны всегда использовать его во время тестирования/разработки, например, MySQL ошибки, код ошибки и такое, что бы сказал вам некоторые из вас в настоящее время вопросов иметь.
You can read this page for more information on How to get useful error messages in php
.
Продолжая, вы используете $_GET[data]
в двойных кавычках, что делает его теряет свои границы, как вы не определили для него, если вы имели какой-либо обработки ошибок было бы было указано.
Вы могли бы сцеплены его " . $_GET['data'] . "
или даже использовать фигурные скобки, чтобы определить его границы, как так {$_GET['data']}
Вы инъекционного GET элементы непосредственно в запросе без дезинфицировать его, что это большая ошибка и желанный для SQL-инъекции.
Все вышеизложенное основано на небольшой части кода, которую вы нам показали, и я боюсь видеть остальную часть.
Вот пример того, как он будет выглядеть так: JOIN
s в вашем запросе вместе с параметризованным MySQLi.
<?php
// yes we want to see errors
ini_set('error_reporting', E_ALL);
// Your database info
$db_host = 'your database host address';
$db_user = 'your database username';
$db_pass = 'your database user password';
$db_name = 'your database name';
$con = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if ($con->connect_error)
{
die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
}
$sql = "SELECT h.id_hotel,
h.hotel_name,
s.id_state,
s.state_name,
c.id_city,
c.city_name
FROM hotel h
JOIN state s
ON h.id_state = s.id_state
JOIN city c
ON h.id_city = c.id_city
WHERE h.hotel_name = ? OR
s.state_name = ? OR
c.city_name = ?";
if (!$result = $con->prepare($sql))
{
die('Query failed: (' . $con->errno . ') ' . $con->error);
}
if (!$result->bind_param('sss', $_GET['data'], $_GET['data'], $_GET['data']))
{
die('Binding parameters failed: (' . $result->errno . ') ' . $result->error);
}
if (!$result->execute())
{
die('Execute failed: (' . $result->errno . ') ' . $result->error);
}
$result->bind_result($hotel_id, $hotel_name, $state_id, $state_name, $city_id, $city_name);
while ($result->fetch())
{
echo $hotel_id, " - ", $hotel_name, " - ", $state_id, " - ", $state_name, " - ", $city_id, " - ", $city_name, "\n";
}
$result->close();
$con->close();
'$ _GET [данные]' непосредственно в запросе? Какой кошмар! См. [Как я могу предотвратить SQL-инъекцию в PHP?] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – ForguesR
Это просто пример чувак .. Я ценю ваше предложение .. но это не решает мою проблему .. я думаю, что вы вне форума –
Пожалуйста, определите * nothing *: empty resulset, error или blank page? – ForguesR