使用PHP中搜索框中输入的关键字仅显示表中的数据

时间:2018-01-10 04:22:37

标签: php html mysql

我正在尝试使用HTML中的搜索框过滤掉我桌子中的数据。我的搜索框应该从SQL查询中返回值。

但即使我搜索,也不会显示已过滤的表格。

我检查了“喜欢”这样的情况。使用'%n'在phpMyAdmin中查询(我的意思是我的表格中的条目以' n'结尾)并且它有效,但是因为在我的搜索框中输入的特定文本,我无法检查对于我正在使用的查询。

非常感谢任何帮助和提前感谢。

 <?php
//error_reporting(E_ERROR | E_PARSE);
$db_host = 'localhost';
$db_user = 'zamil'; // Username
$db_pass = '1234'; // Password
$db_name = 'resi'; // Database Name
$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$conn) {
die ('Failed to connect to MySQL: ' . mysqli_connect_error());  
}
else{
print("connected");
}
$output = '';
$query = '';

if (isset($_GET['search'])){

$searchq = $_GET['search'];

$searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
$query = mysqli_query( $conn, "SELECT * FROM 'salesflow' WHERE 'Rep Name' 
LIKE '%$searchq%'") or die("could not search!");
$count = mysqli_num_rows($query);
if($count == 0){
$output = 'There was no entries';
}else{
while ($row = mysqli_fetch_array($query)) {
    $cname = $row['Source of Content'];
    $rname = $row['Rep Name'];

    $output .= '<div>'.cname.' '.rname.'</div>';
    }
  }
}

if ($query != 0) {
die ('SQL Error: ' . mysqli_error($conn));
}

?>

<form action="Sales1.php" method="post"> 
Search: <input type="text" name="search" /> 
<input type="submit" value="Search" /><br />  
</form>

<?php print("$output"); ?> 

</body>
</html>

2 个答案:

答案 0 :(得分:0)

您的SQL查询不正确:

SELECT * FROM 'salesflow' WHERE 'Rep Name' LIKE '%$searchq%'

您在salesflow表名称和Rep Name列名称周围加上单引号(&#39;),但您应该使用反引号(`)代替。

有关详细信息,请参阅Using backticks around field names

答案 1 :(得分:0)

我认为您输入了错误的查询语法。

$query = mysqli_query( $conn, "SELECT * FROM 'salesflow' WHERE
'Rep Name' LIKE '%$searchq%'") or die("could not search!");

应该这样写:

$query = mysqli_query( $conn, "SELECT * FROM 'salesflow' WHERE
'Rep Name' LIKE '%".$searchq."%'") or die("could not search!");

始终使用&#39;查询中的字符串。

另外,我的建议是不要在表格中使用SQL进行搜索,而是使用DataTable based on AngularJS