PHP / MYSQLI简单搜索不起作用

时间:2016-01-20 03:53:55

标签: php mysql mysqli

我是PHP / MYSQLI的新手,我在创建一个简单的搜索来搜索我的数据库时遇到了麻烦。我的数据库中的列是:' ID' ,'姓名' ,'年龄'我的数据库的名称是'用户'表名是' 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>

它只返回一个空白页面而没有别的。我希望用户在表单的文本区域中输入名称,并在单击“搜索”按钮时,应在网页上显示与数据库中该名称对应的所有数据。请纠正我犯错的地方。

2 个答案:

答案 0 :(得分:3)

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

您的表单未发布。

更改

<input type="button" name="Search" value="Search" />

要:

<input type="submit" name="Search" value="Search" />

另外,mysqli_query()需要数据库连接资源。

您只提供了sql查询。

$sql = mysqli_query($databaseConnection, "SELECT * FROM employees WHERE Name = '$search' ");
  

混合mysqli_query(mysqli $ link,string $ query [,int $ resultmode =   MYSQLI_STORE_RESULT])

Reference

答案 1 :(得分:0)

根据OP的要求,我将解释mysqli中的Prepared语句的一般概念,如果您觉得我没有详细说明某个主题,请随时编辑它。

  1. 您需要做的第一件事是准备查询(准备 查询正在向数据库发送一个空查询)。而不是 定义参数,你会加上一个问号。

    1. 之后你需要将参数绑定到问号按照查询中的确切顺序!你要做的第一件事就是定义参数字符串的类型是s整数是i和blob 为B。之后,您需要使用数据定义变量。

      1. 您需要做的第三件也是最后一件事就是执行查询。我总是在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);
        }
        
  2. 编辑:此处的问题解释了有关如何阻止SQL-injections的更多信息。