【发布时间】:2018-01-15 14:14:21
【问题描述】:
我是 PHP/MYSQLI 的新手,在创建简单的搜索来搜索我的数据库时遇到了麻烦。我的数据库中的列是:'ID'、'Name'、'Age'。我的数据库名称是“用户”,表名称是“员工”。
代码如下:
<?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>
它只是返回一个空白页,没有别的。我希望用户在表单的文本区域中输入一个名称,然后单击“搜索”按钮,数据库中与该名称对应的所有数据都应显示在网页上。请纠正我的错误之处。
【问题讨论】:
-
function
mysqli_query也需要connection参数(程序接口),它在手册中有说明并且至少打开你的错误报告 -
你的mysqli_query函数有错误,你需要指定两个参数。先尝试调试代码
-
您需要使用准备好的语句来防止SQL-injections。因为现在您的代码对 SQL 注入开放。
-
@BRoebie 是的,我知道我的代码对 SQL 注入是开放的,但正如我所说,我现在正处于学习过程中,但我会尽快完成。
-
很好,我会说一步;) 对我来说,无论情况如何,我都想使用准备好的语句,即使它用于 Intranet 应用程序。因为一些同事来找我(顺便说一句,我是这家公司的实习生),他试图说服我我不需要实施这个(这当然是一个巨大的 BS)。因为用户限制。这当然与它无关xD。