我目前有一个小的PHP脚本,可以根据用户输入搜索数据库。有一个html文件,其中有一个字段用于将搜索字符串输入数据库。从本质上讲,您可以搜索员工。
如果找到,则应检索员工结果,如果没有,则应检索“找不到员工”消息。
但出于某种原因,无论搜索如何,查询都会返回数据库中的每个员工。
我一直在研究这个问题超过一个小时,老实说我很难过。这可能是一个简单的错误,但我可以提供一些帮助。
<?php
$con= new mysqli("localhost","root","","Employee");
$name = $_post['search'];
//$query = "SELECT * FROM employees
// WHERE first_name LIKE '%{$name}%' OR last_name LIKE '%{$name}%'";
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con, "SELECT * FROM employees
WHERE first_name LIKE '%{$name}%' OR last_name LIKE '%{$name}%'");
while ($row = mysqli_fetch_array($result))
{
echo $row['first_name'] . " " . $row['last_name'];
echo "<br>";
}
mysqli_close($con);
?>
任何帮助表示感谢。
感谢。
答案 0 :(得分:9)
您需要使用$_POST
而不是$_post
。
答案 1 :(得分:6)
首先添加HTML代码:
<form action="" method="post">
<input type="text" name="search">
<input type="submit" name="submit" value="Search">
</form>
现在添加了PHP代码:
<?php
$search_value=$_POST["search"];
$con=new mysqli($servername,$username,$password,$dbname);
if($con->connect_error){
echo 'Connection Faild: '.$con->connect_error;
}else{
$sql="select * from information where First_Name like '%$search_value%'";
$res=$con->query($sql);
while($row=$res->fetch_assoc()){
echo 'First_name: '.$row["First_Name"];
}
}
?>
答案 2 :(得分:0)
正如上面的回答,我希望这是问题。
$_POST['search']
代替$_post['search']
再次使用LIKE '%$name%'
代替LIKE '%{$name}%'
答案 3 :(得分:0)
这是一个更好的代码,可以帮助您完成。
使用您的数据库,而是我使用mysql而不是mysqli
享受吧。
<body>
<form action="" method="post">
<input name="search" type="search" autofocus><input type="submit" name="button">
</form>
<table>
<tr><td><b>First Name</td><td></td><td><b>Last Name</td></tr>
<?php
$con=mysql_connect('localhost', 'root', '');
$db=mysql_select_db('employee');
if(isset($_POST['button'])){ //trigger button click
$search=$_POST['search'];
$query=mysql_query("select * from employees where first_name like '%{$search}%' || last_name like '%{$search}%' ");
if (mysql_num_rows($query) > 0) {
while ($row = mysql_fetch_array($query)) {
echo "<tr><td>".$row['first_name']."</td><td></td><td>".$row['last_name']."</td></tr>";
}
}else{
echo "No employee Found<br><br>";
}
}else{ //while not in use of search returns all the values
$query=mysql_query("select * from employees");
while ($row = mysql_fetch_array($query)) {
echo "<tr><td>".$row['first_name']."</td><td></td><td>".$row['last_name']."</td></tr>";
}
}
mysql_close();
?>
答案 4 :(得分:0)
`
require_once('functions.php');
$errors = FALSE;
$errorMessage = "";
if(mysqli_connect_error()){
$errors = TRUE;
$errorMessage .= "There was a connection error <br/>";
errorDisplay($errorMessage);
die($errors);
} else if($errors != "TRUE"){
$errors .= FALSE;
}
if(isset(mysqli_real_escape_string($_POST['search']))){
$search = mysqli_real_escape_string($_POST['search']);
search(search);
}
?>
<?php
//This is functions.php
function search($searchQuery){
echo "<div class="col-md-10 col-md-offset-1">";
$searchTerm
$query = query("SELECT * FROM `index` WHERE `keywords` LIKE '".$searchTerm."' ");
while($row = mysqli_fetch_array($query)){
$results = <<< DELIMITER
<div class="result col-md-12">
<a href="index.php?search={$row['id']}"> {$row['Title']} </a>
<p class="searchDesc">{$row['description']}</p>
</div>
DELIMITER;
echo $results;
}
echo "</div>";
}
function errorDisplay($msg){
if(!isset($_SESSION['errors'])){
$_SESSION['errors'] = $msg;
showError($msg);
} else if() {
$_SESSION['errors'] .= $msg . "<br>";
showError($msg);
}
}
function showError($msg) {
return $msg;
unset($_SESSION['errors']);
}
?>`
Perhaps That Helps?
答案 5 :(得分:0)
如果执行mysqli_fetch_array()
,则必须在$row index ex.($row[3])
中放入整数。如果读取$row['id']
或$row['example']
,则必须使用mysqli_fetch_assoc
。
答案 6 :(得分:0)
我认为它适合所有人
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Search</title>
</head>
<body>
<form action="" method="post">
<input type="text" placeholder="Search" name="search">
<button type="submit" name="submit">Search</button>
</form>
</body>
</html>
<?php
if (isset($_POST['submit'])) {
$searchValue = $_POST['search'];
$con = new mysqli("localhost", "root", "", "testing");
if ($con->connect_error) {
echo "connection Failed: " . $con->connect_error;
} else {
$sql = "SELECT * FROM customer_info WHERE name OR email LIKE '%$searchValue%'";
$result = $con->query($sql);
while ($row = $result->fetch_assoc()) {
echo $row['name'] . "<br>";
echo $row['email'] . "<br>";
}
}
}
?>