我遇到了一个问题,我的PHP代码似乎不起作用,我一遍又一遍地看着它,我无法弄明白。我正在开展一个项目,要求我允许我的产品(网站)的潜在用户通过类型搜索活动,例如喜剧或现场乐队等。这应该允许用户查看他们输入的所有类型的事件都会出现。
到目前为止,我已创建此代码:
<?php
//$output= NULL;
if(isset($_POST['submit'])){
//connect db
require_once('connect.php');
$search = $_POST['search'];
//query db
$result = $mysqli->query("SELECT * FROM resit1617_events WHERE type =
'$search'");
if($result->num_rows > 0){
while($rows = $result->fetch_assoc())
{
$event = $rows['name'];
$type = $rows['type'];
$description = $rows['description'];
$day = $rows['day'];
$month = $rows['month'];
$year = $rows['year'];
$recommendations = $rows['recommendations'];
$age = $rows['min_age'];
$output ="Event: $event, Type: $type, Date: $day/$month/$year, Minimum Age: $age, Recommendations: $recommendations, Description:
$description<br />";
}
}else{
$output = "No Results";
}
}
?>
然后我将包含php的HTML代码用于回显输出值,但代码似乎不起作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>The Welders Arms</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>
<div id="topbar">
<p><img src="img/logo.png" alt="logo"></p>
</div>
<div id="wrapper">
<form method="POST" action="search.php">
<label id="searchheading">Search Events in The Welders Arms</label>
<br>
<input type="text" placeholder="Search by type of event e.g. live band, comedy etc.." id="type" name="search">
<input type="submit" id="searchbutton" value="Search">
<br>
</form>
<?php echo $output; ?>
</div>
</body>
</html>
如果有人知道为什么它不起作用的解决方案,请告诉我,因为这会阻碍我继续我的项目。
谢谢!
PS。所有代码都在一个名为search.php
的文件中答案 0 :(得分:1)
一个简单的解决方案是改变你的初始if:
if(isset($_POST['submit'])){
为:
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['search'])){
哪个测试表单是否使用正确的方法提交,还测试搜索字段是否存在。
您还应该考虑使用prepared statements或至少手动转义字符串来保护自己免受mysql注入攻击:
$search = $mysqli->real_escape_string($_POST['search']);
答案 1 :(得分:0)
您没有像name="submit"
这样的名为提交的属性,因为在您的php脚本中,您设置了isset($_POST['submit']
来抓住您尝试提交的帖子。