我刚刚开始尝试学习PHP和MYSQL并且已经关注了一些创建网页搜索引擎的教程,但是遇到了一个问题,当我提交表单时结果没有返回,我不知道问题在哪里或在哪里尝试解决问题,所以它认为在这里发布我的问题是值得的。希望有人可以帮助我,提前谢谢。
PHP
<?php
mysql_connect("localhost","root","123")or die("Could not connect to Db");
mysql_select_db("members") or die("Could not find db");
if(isset($_POST['submit'])){
$searchq = $_POST['submit'];
$searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
$query = mysql_query("Select * FROM memberlist WHERE Fname LIKE '%$searchq%' OR Lname LIKE '%$searchq%' ") or die(mysql_error());
$count = mysql_num_rows($query);
if($count == 0){
$output = "No results were found, sorry.";
}
else{
while($row = mysql_fetch_array($query)){
$firstname = $row['Fname'];
$lastname = $row['Lname'];
$output .= "<div>".$firstname." ".$firstname."</div>";
}
}
}
?>
HTML
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Search</title>
</head>
<body>
<form action="index.php" method="post">
<input type="text" name="searchfname" placeholder="Enter first name">
<input type="text" name="searchlname" placeholder="Enter last name">
<input type="submit" name="submit" value="Submit">
</form>
<?php print($output);?>
</body>
</html>
答案 0 :(得分:6)
您可以使用$_POST['submit']
检查表单是否已提交,但不包含所有表单值。
您可以按各自的名称访问单独的表单值。
因此,请将$_POST['searchfname']
用于第一个文本框中的值,将$_POST['searchlname']
用于第二个文本框。
您的代码应该更像这样;
$searchqf = $_POST['searchfname'];
$searchql = $_POST['searchlname'];
$searchqfreplace = preg_replace("#[^0-9a-z]#i","",$searchqf);
$searchqlreplace = preg_replace("#[^0-9a-z]#i","",$searchql);
$query = mysql_query("Select * FROM memberlist WHERE Fname LIKE '%$searchqf%' OR Lname LIKE '%$searchql%' ") or die(mysql_error());
$count = mysql_num_rows($query);
请注意,这种撰写查询的方式非常不安全且容易受到SQL injection的攻击。</ p>
答案 1 :(得分:0)
您已将$ searchq变量分配给提交按钮。 改变这一行
$searchq = $_POST['submit'];
到
$searchq = $_POST['searchfname'];
或
$searchq = $_POST['searchlname'];
或两者:
$searchq = $_POST['searchfname'].$_POST['searchlname'];
答案 2 :(得分:0)
你不能使用$ searchq = $ _POST ['submit'];因为没有发布名称为提交的值
你必须使用以下任何一种......
$ searchq = $ _POST ['searchfname'];
或强>
$ searchq = $ _POST ['searchlname'];
答案 3 :(得分:0)
在您的代码中,您正在搜索“提交”值而不是表单中的值。
将$searchq = $_POST['submit'];
替换为:
$searchq = $_POST['searchfname'];
$searchq2 = $_POST['searchlname'];
和查询:
Select * FROM memberlist WHERE Fname LIKE '%$searchq%' OR Lname LIKE '%$searchq2%'
答案 4 :(得分:0)
首先,
使用searchfname
或searchlname
或两者进行搜索。
其次,像这样修改
在$count = mysql_num_rows($query);
之后,
if($count == 0){
$output = "No results were found, sorry.";
}
else{
$output = '';
while($row = mysql_fetch_array($query)){
$firstname = $row['Fname'];
$lastname = $row['Lname'];
$output .= "<div>".$firstname." ".$firstname."</div>";
}
第三,在print $output
中使用Second page(where database is fetched)
,而不是First page(Page with FORM)
。
如果要在First页面中显示结果,请使用jQuery / Ajax函数