Как отобразить правильные данные из MySQL? - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь запросить базу данных и отобразить результаты.Запрос основан на информации из HTML-формы.Однако, когда я ввожу имя, такое как Джон, в форму, для которой в таблице есть 2 записи с этим именем, я получаю 0 результатов.Я не знаю, в чем проблема.

Вот HTML-форма:

<form action="cust_details_search.php" method="post">         
Name :
<input type="text" name="name_search" id="name_search" >
Email :
<input type="email" name="email_search" id ="email_search" >

Phone no. :

 <input type="phone" name="phone_search" id="phone_search" >


Address :
<input type="text" name="address_search" id="address_search" >

City :
<input type="text" name="city_search" id="city_search" >

State :
<input type="text" name="state_search" id="state_search" >
<br> <br>
Country :
<input type="text" name="country_search" id="country_search">

Product Enquired for :
<input type="text" name="prod_search" id="prod_search">  

<input type="submit" value="Submit">

</form>

И файл php:

 <?php 
$server = "127.0.0.1";
$dbUsername = "root";
$dbPassword = "";

//create connection
$dbconn = new mysqli($server, $dbUsername, $dbPassword, $dbname);

 $name_search = $_POST['name_search'];
 $email_search = $_POST['email_search'];
 $phone_search = $_POST['phone_search'];
 $address_search = $_POST['address_search'];
 $city_search = $_POST['city_search'];
 $state_search = $_POST['state_search'];
 $country_search = $_POST['country_search'];
 $prod_search = $_POST['prod_search'];

$run_query = mysqli_query($dbconn, 
            "SELECT * 
            FROM CustomerDetails 
            WHERE (Name  LIKE '%.$name_search.%') 
            OR (`Phone no.` LIKE '%.$phone_search.%') 
            OR (`Address` LIKE '%.$address_search.%') 
            OR (`City` LIKE '%.$city_search.%') 
            OR (`State` LIKE '%.$state_search.%') 
            OR (`Country` LIKE '%.$country_search.%') 
            OR (`Product Enq. For` LIKE '%.$prod_search.%') 
            OR (`Email` LIKE '%.$email_search.%')");

?>
<html>
<head>
<title>Search Resutls</title>
<style>
body {
background-color: rgb(131,41,54);
}
h1 { color:#FFFFFF
        }
h2 {  color:#FFFFFF
        }
p {  color:#FFFFFF
        } 

</style>

</head>
<body>
<center>
<h2> Customer Details </h2>
 <table style="width:100%">
<thead>
<tr>
    <th>Name</th>
    <th>Email</th>
    <th>Phone no. </th>
    <th>Address </th>
    <th>City </th>
    <th>State </th>
    <th>Country</th>
    <th>Product Enquired for </th>
    <th>Follow up details </th>
    </tr>
    </thead>
    <tbody>
<?php 
while($result = mysqli_fetch_assoc($run_query)) {
 ?>
<tr>
<td><?php echo $result['Name'] ?> </td>
<td><?php echo $result['Email'] ?></td>
<td><?php echo $result['Phone no.'] ?></td>
<td><?php echo $result['Address'] ?></td>
<td><?php echo $result['City'] ?></td>
<td><?php echo $result['State'] ?></td>
<td><?php echo $result['Country'] ?></td>
<td><?php echo $result['Product Enq. For'] ?></td>
<td><?php echo $result['Follow Up'] ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</center>
</body>
</html>

Любая помощь приветствуется.Заранее спасибо!

1 Ответ

0 голосов
/ 24 июня 2018

Вы используете конкатенатор PHP ., но вам не нужно указывать строку в двойных кавычках.$variables автоматически расширяются в строку в двойных кавычках, поэтому попробуйте

$run_query = mysqli_query($dbconn, 
            "SELECT * 
            FROM CustomerDetails 
            WHERE (Name  LIKE '%$name_search%') 
            OR (`Phone no` LIKE '%$phone_search%') 
            OR (`Address` LIKE '%$address_search%') 
            OR (`City` LIKE '%$city_search%') 
            OR (`State` LIKE '%$state_search%') 
            OR (`Country` LIKE '%$country_search%') 
            OR (`Product Enq For` LIKE '%$prod_search%') 
            OR (`Email` LIKE '%$email_search%')");

AL Так у некоторых имен ваших столбцов есть .?Я предполагаю, что эти имена столбцов на самом деле не содержат точек.Однако, если это так, я предлагаю вам удалить их, отредактировав свою схему.

Ваш сценарий широко открыт для Атака SQL-инъекций Даже , если вы экранируете входные данные, егонебезопасно! Использовать подготовленные параметризованные операторы в API MYSQLI_ или PDO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...