PHP/MYSQLI简单搜索不起作用

PHP/MYSQLI简单搜索不起作用,php,mysql,mysqli,Php,Mysql,Mysqli,我是PHP/MYSQLI新手,在创建一个简单的搜索来搜索我的数据库时遇到了困难。我的数据库中的列是:“ID”、“Name”、“Age”。我的数据库名为“users”,表名为“employees” 代码如下: <?php require('Connections/Localhost.php'); ?> <?php if (isset($_POST['Search'])) { $search = $_POST['element']; $sql = mysqli_qu

我是PHP/MYSQLI新手,在创建一个简单的搜索来搜索我的数据库时遇到了困难。我的数据库中的列是:“ID”、“Name”、“Age”。我的数据库名为“users”,表名为“employees”

代码如下:

<?php require('Connections/Localhost.php'); ?>
<?php
if (isset($_POST['Search'])) {
    $search = $_POST['element'];
    $sql = mysqli_query("SELECT * FROM employees WHERE Name = '$search' ");
    if($sql->num_rows > 0 ) {
        while($rows = $sql->fetch_assoc()) {
            $id = $rows['ID'];
            $name = $rows['Name'];
            $age = $rows['Age'];
            echo "ID: $id <br> Name: $name <br> Age: $age <br>";
        }
    }
    else {
        echo "No Result Found!";
    }
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<form method="post">
<input type="text" name="element" placeholder="Enter A Name"/>
<input type="button" name="Search" value="Search" />
</form>
</body>
</html>


您需要将按钮类型更改为
submit

您的表单未发布

改变

<input type="button" name="Search" value="Search" />
混合mysqli_查询(mysqli$link,string$query[,int$resultmode= MYSQLI_存储_结果])


根据OP的要求,我将在这里解释mysqli中准备好的声明的一般概念。如果您觉得我没有详细阐述主题,请随意编辑

  • 您需要做的第一件事是准备查询(准备 查询正在向数据库发送一个空查询)。而不是 定义参数时,将打一个问号

  • 之后,您需要按照查询中的确切顺序将参数绑定到问号您要做的第一件事是定义参数字符串的类型是s integer is i和blob 是b。之后,您需要使用数据定义变量

  • 您需要做的第三件也是最后一件事是执行查询。我总是在if语句中使用它,因为它将返回 true或false,这样您就可以检查查询是否失败并处理错误。在这种情况下,您将不需要else,因为如果查询返回false,页面将死亡

    /*1.*/
    $stmt = $databaseConnection->prepare("SELECT * FROM `employees` WHERE `name` = ?"); 
    /*2.*/
    $stmt->bind_param("s",$search); 
    /*3.*/
    if(!$stmt->execute())
    {
    die("There went something wrong: " . $stmt->error);
    }
    

  • 编辑:下面的问题解释了有关如何防止的更多信息。

    函数还需要连接参数(过程接口),手册中有说明,至少打开错误报告。mysqli_查询函数中有一个错误,您需要指定两个参数。首先尝试调试代码。为了防止错误,您需要使用准备好的语句。因为现在您的代码对SQL注入开放。@BRoebie是的,我知道我的代码对SQL注入开放,但正如我所说,我现在只是在学习过程中,但我很快就会开始。很好,我会说一步一步;)对我来说,无论在什么情况下,我都希望使用预先准备好的语句,即使它用于内部网应用程序。因为有一位同事来找我(顺便说一句,我是这家公司的实习生),他试图说服我,我不需要实施这个(当然这是一个巨大的BS负载)。因为用户限制。这当然与此无关xD。谢谢你的帮助。我已经理解mysqli中“准备好的声明”的概念。没问题,伙计。如果您有任何问题,我很乐意帮助您
    $sql = mysqli_query($databaseConnection, "SELECT * FROM employees WHERE Name = '$search' ");
    
    /*1.*/
    $stmt = $databaseConnection->prepare("SELECT * FROM `employees` WHERE `name` = ?"); 
    /*2.*/
    $stmt->bind_param("s",$search); 
    /*3.*/
    if(!$stmt->execute())
    {
    die("There went something wrong: " . $stmt->error);
    }