我是PHP/MYSQLI的新手,我在创建简单的搜索来搜索我的数据库时遇到了问题。我的数据库中的列是:"ID","名称","年龄"。我的数据库名称是"用户",表名称是"员工"。
这是代码:
<?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" />
自:
<input type="submit" name="Search" value="Search" />
此外,mysqli_query() 需要数据库连接资源。
你只给出了sql查询。
$sql = mysqli_query($databaseConnection, "SELECT * FROM employees WHERE Name = '$search' ");
混合mysqli_query ( mysqli $link , 字符串 $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
参考
根据OP的要求,我将在这里解释mysqli中准备好的语句的一般概念,如果您觉得我没有详细说明某个主题,请随意编辑此内容。
-
您需要做的第一件事是准备查询(准备查询正在向数据库发送空查询)。但不是定义参数时,您将打一个问号。
-
之后,您需要按照查询中的确切顺序将参数绑定到问号!您要做的第一件事是定义参数字符串的类型是 s 整数是 i 和 blob是 b。之后,您需要使用数据定义变量。
-
您需要做的第三件也是最后一件事是执行查询。我总是在 if 语句中使用它,因为它会返回一个真或假,像这样,您可以检查查询是否失败并处理错误。在这种情况下,您将不需要 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); }
-
-
编辑:这是一个问题,解释了更多关于如何防止SQL注入的信息。