我是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>
它只返回一个空白页面而没有别的。我希望用户在表单的文本区域中输入名称,并在单击“搜索”按钮时,应在网页上显示与数据库中该名称对应的所有数据。请纠正我犯错的地方。
答案 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])
答案 1 :(得分:0)
根据OP的要求,我将解释mysqli中的Prepared语句的一般概念,如果您觉得我没有详细说明某个主题,请随时编辑它。
您需要做的第一件事是准备查询(准备 查询正在向数据库发送一个空查询)。而不是 定义参数,你会加上一个问号。
之后你需要将参数绑定到问号按照查询中的确切顺序!你要做的第一件事就是定义参数字符串的类型是s整数是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);
}
编辑:此处的问题解释了有关如何阻止SQL-injections的更多信息。