繁体   English   中英

如何通过php,html和数据库(cpanel)搜索和显示项目

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM