Я пытаюсь создать базу данных с возможностью поиска с использованием PHP и MySQL. У меня есть файл с именем mission.html
со следующим кодом:
<html>
<body>
<form name="form1" method="post" action="mission1results.php" id="search">
<input name="search" type="text"/>
<input type="submit" name="submit" vaule="Search"/>
</form>
mission1results.php
<html>
<body>
<?php
include 'login.php';
$connection = mysqli_connect(
$db_hostname, $db_username,
$db_password, $db_database);
if(mysqli_connect_error()){
die("Database Connection Failed: " .
mysqli_connect_error() .
" (" . mysqli_connect_errno() . ")");
}
?>
<?php
$q_cond = mysqli_real_escape_string($_GET['search']);
$query="SELECT * From Merchant Where MerchantName='".$q_cond."'";
$result=mysqli_query($connection,$query);
if ($result===false)
{
die("Database Query Failed!")
};
while ($row=mysqli_fetch_assoc($result)){
echo "MerchantName: ".$row["MerchantName"].",";
echo "<hr/>";
}
mysqli_free_result($result);
?>
<?php
mysqli_close($connection);
?>
</body>
</html>
Когда я нажимаю «Отправить» и введите что-нибудь в строке поиска, ничего не появляется. Я не получаю ошибку, я не получаю результаты, все пусто. Может кто-нибудь сказать мне, почему это?
У вас есть синтаксическая ошибка в mission1results.php
if ($result===false)
{
die("Database Query Failed!")
};
должен быть изменен на:
if ($result===false)
{
die("Database Query Failed!");
}
Вместо $_GET['search']
использование $_POST['search']
потому что ваш метод отправки форм post
,
Один из mysqli_real_escape_string
параметры должны быть подключены к БД.
синтаксические ошибки в HTML, например, vaule="Search"
Синтаксические ошибки в PHP, например, не должно быть ;
после }
в if
Если вы видите пустой экран с ошибками, указанными в предыдущих ответах, вы можете взглянуть на уровень PHP error_reporting в вашей системе. http://php.net/manual/en/function.error-reporting.php. Вы должны видеть ошибки PHP, на сервере разработки мне нравится сообщать об ошибках PHP, предупреждениях и уведомлениях.
Кроме того, ожидаете ли вы, что пользователи введут точный поисковый запрос? Вы можете рассмотреть что-то вроде:
$query="SELECT * From `Merchant` Where `MerchantName` like '%".$q_cond."%'";
В первую очередь: mysqli_real_escape_string()
Требуется передать соединение с БД, тогда есть ваша форма, где вы используете метод POST в форме и GET для вашего запроса.
Обратитесь к руководству: http://php.net/manual/en/mysqli.real-escape-string.php
$q_cond = mysqli_real_escape_string($connection,$_POST['search']);
Плюс поменяй
if ($result===false)
{
die("Database Query Failed!")
};
в
if ($result===false)
{
die("Database Query Failed!");
}
У вас также есть синтаксическая ошибка vaule="Search"
измените это на value
добавлять Отчет об ошибках в начало вашего файла (ов), который поможет найти ошибки.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
Примечание: Отчеты об ошибках должны выполняться только на стадии подготовки, а не на производстве.
Также or die(mysqli_error($connection))
в mysqli_query()
чтобы найти возможные ошибки.