可能重复:
PHP, MySQL validation malfunction and search doesn't work?
我创建了一个表单,除了搜索之外,每件事情都运行良好。例如,只要用户在搜索框中输入任何值,它就会显示数据库的结果,员工的示例名称等等...... 请看下面的编码......
<html>
<head>
<?php
//require_once('student_form.php');
if(isset($_POST['search'])){
$id=$_REQUEST['id'];
$fname=$_POST['fname'];
//connect to the database
include('connection.php');
//-query the database table
$sql=mysql_query("SELECT * FROM members WHERE (FirstName LIKE '". $fname ."%' OR LastName LIKE '". $lname ."%'");
//-run the query against the mysql query function
$result=mysql_query($sql);
if($row=mysql_fetch_array($result)){
$fname=$row['FirstName'];
$lname=$row['LastName'];
/*$email=$row['Email'];
$age =$row['Age'];
$gender=$row['Gender'];
$course = $row['Course'];*/
}
//-display the result of the array
else
{
<?php echo $rows['FirstName']; ?>
<?php echo $rows['LastName']; ?>
}
}
?>
</head>
<body>
<form action="search.php" method="post">
<table>
<tr>
<td><strong>search box</strong></td>
<td><strong>:</strong></td>
<td><input type="text" name="search" value=""size="30"/><input type="submit" name="s1" value="Search"/></td>
</table>
</form>
</body>
</html>
答案 0 :(得分:2)
请注意,旧的mysql_
扩展名已被弃用...请参阅top of the mysql_query
doc
不鼓励使用此扩展程序。相反,应使用MySQLi或PDO_MySQL扩展名。另请参阅MySQL:choosing an API guide和related FAQ以获取更多信息。该功能的替代方案包括:
- mysqli_query()
- PDO ::查询()
但是为了让您了解问题所在,请替换此行:
$sql=mysql_query("SELECT * FROM members WHERE (FirstName LIKE '". $fname ."%' OR LastName LIKE '". $lname ."%'");
//-run the query against the mysql query function
$result=mysql_query($sql);
用这个:
$result=mysql_query("SELECT * FROM members WHERE (FirstName LIKE '". $fname ."%' OR LastName LIKE '". $lname ."%'");
if (!$result) {
die('Could not query:' . mysql_error());
}
您只需要执行mysql_query
一次,现在这将在您的查询中输出错误...如果查询失败,则mysql_query
会返回boolean false
... {{3 }}
请您花一些时间阅读see the docs here
注意 SQL Injection会解决您的问题 - 但只是修复它将来不会帮助您....
答案 1 :(得分:1)
您必须完全重写代码。
首先,从查询中删除FirstName
之前的括号:
"SELECT * FROM members WHERE FirstName LIKE '". $fname ."%' OR LastName LIKE '". $lname ."%'"
现在,请注意:如果$sql
是函数mysql_query
,则$result
正在运行查询查询(mysql_query(mysql_query("..."))
)。
相反,请使用$result = mysql_query("...")
并删除变量$sql
。
这里的第三个问题是你的PHP代码中有一个<?php
标记。移除<?php
内的?>
和else{ }
标记。
我不明白什么是$rows
,现在有声明。
答案 2 :(得分:0)
您必须删除FirstName
附近的括号
$sql=mysql_query("SELECT * FROM members WHERE FirstName LIKE '". $fname ."%' OR LastName LIKE '". $lname ."%'");