[英]How to search and display items through php,html and from database (cpanel)
我想创建一个表格,允许用户输入搜索内容,并让它从数据库中获取值并显示它们,由于某种原因,我无法使我的查询正常工作,即使显示“无法搜索”在我输入搜索条件之后。 include(“ global.php”)是我用来连接数据库的工具。 为了将其他代码连接到数据库,我使用了以下这些代码:
include("global.php");
session_start();
$userid = ($_SESSION['userid']);
if (isset($_SESSION['userid']) == false)
{
header("Location: login.php");
}
$mysqli = new mysqli(spf, dbuser, dbpw, db);
$stmt = $mysqli->prepare("SELECT name, position FROM profiles WHERE userid=?");
$stmt->bind_param("s", $userid);
$stmt->execute();
$stmt->bind_result($name, $position);
$stmt->fetch();
$stmt->close();
$mysqli->close();
?>
以下是我面临的问题。 上面是我通常如何连接到数据库并检索所需数据的示例。 但是我不知道如何将其应用于以下代码。
<form action ="search.php" method = "post">
<input name="search" type="text" size="30" />
<input type="submit" value="Search"/>
</form>
<?php
include("global.php");
error_reporting(E_ERROR);
$output = '';
if(isset($_POST['search'])) {
$search = $_POST['search'];
$search = preg_replace("#[^0-9a-z]i#","", $search);
$mysqli_query = new mysqli(spf, dbuser, dbpw, db);
$query = mysqli_query("SELECT * FROM items WHERE userid LIKE '%$search%'") or die ("Could not search");
$count = mysqli_num_rows($query);
if($count == 0){
$output = "There was no search results!";
}else{
while ($row = mysqli_fetch_array($query)) {
$userid = $row ['userid'];
$carno = $row ['carno'];
$cost = $row ['cost'];
$area = $row ['area'];
$receipt = $row ['receipt'];
$output .='<div> '.$userid.' '.$carno.' '.$cost.''.$area.' '.receipt.'</div>';
}
}
}
?>
预习:
让我解释以下查询:
$query = mysqli_query("SELECT * FROM items WHERE userid LIKE '%$search%'") or die ("Could not search");
您正在搜索userid LIKE '%search%'
。 当前,您正以文本形式搜索“%search%”,而$search
应该包含$_POST
数据,例如“ Ronnie Oosting”。 但我知道您想要一个包含要搜索的信息的变量。 这意味着您需要“拆分”文本和php。 因此,有效的查询应类似于:
$query = mysqli_query("SELECT * FROM items WHERE userid LIKE %'" . $search . "'%") or die ("Could not search");
注意:我没有对此进行测试,所以让我知道您是否获得结果。
$search
现在是一个变量,因此您需要为$search
设置可硬编码的数据,或者在情况下填充$_POST
数据。 诸如此类(不保存): $search = $_POST['something'];
在您的情况下,这应该起作用:
if(isset($_POST['search'])) {
$search = $_POST['search'];
$search = preg_replace("#[^0-9a-z]i#","", $search);
$mysqli_query = new mysqli('spf', 'dbuser', 'dbpw', 'db');
$query = mysqli_query("SELECT * FROM items WHERE userid = '" . $search . "'");
$count = mysqli_num_rows($query);
另一个注意事项:
您正在使用$mysqli = new mysqli(spf, dbuser, dbpw, db);
。 应该是$mysqli = new mysqli('spf', 'dbuser', 'dbpw', 'db');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.