0

我刚刚开始尝试学习 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>
4

5 回答 5

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 注入的影响。

您还需要一种解决问题的方法。您可能想研究echoand print_r

于 2013-10-07T14:10:12.277 回答
0

您已将 $searchq 变量分配给您的提交按钮。更改此行

$searchq = $_POST['submit'];

$searchq = $_POST['searchfname'];

或者

$searchq = $_POST['searchlname'];

或两者:

$searchq = $_POST['searchfname'].$_POST['searchlname'];
于 2013-10-07T14:11:31.207 回答
0

你不能使用 $searchq = $_POST['submit']; 因为没有发布名称为 submit 的值

您必须使用以下任何一种......

$searchq = $_POST['searchfname'];

或者

$searchq = $_POST['searchlname'];

于 2013-10-07T14:13:08.337 回答
0

在您的代码中,您正在搜索“提交”值而不是表单中的值。

替换$searchq = $_POST['submit'];为:

$searchq = $_POST['searchfname'];
$searchq2 = $_POST['searchlname'];

和查询:

Select * FROM memberlist WHERE Fname LIKE '%$searchq%' OR Lname LIKE '%$searchq2%'   
于 2013-10-07T14:14:00.630 回答
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 $outputinSecond page(where database is fetched)而不是 in First page(Page with FORM)

如果要在首页显示结果,请使用 jQuery/Ajax 函数

于 2013-10-07T14:14:18.197 回答