可能的重复项:
PHP,MySQL验证故障和搜索不起作用?
我创建了一个表单,除了搜索之外,一切都工作正常。例如,每当用户在搜索框中输入任何值时,它都会显示来自数据库的结果、员工的示例姓名等......请在下面查看我的编码...
<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>
请注意
,使用旧的mysql_
扩展已被弃用...请参阅mysql_query
文档顶部的通知
不建议使用此扩展。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南和相关常见问题解答以获取更多信息。此功能的替代方法包括:
- mysqli_query()
- PDO::query()
但是为了让您看到问题是什么,请替换此行:
$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
...在此处查看文档
请花一些时间阅读SQL注入
请注意,此答案将解决您的问题 - 但仅修复它对您将来没有帮助....
你必须完全重写你的代码。
首先,在从查询中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
是什么,现在有声明。
您必须删除FirstName
附近的括号,
$sql=mysql_query("SELECT * FROM members WHERE FirstName LIKE '". $fname ."%' OR LastName LIKE '". $lname ."%'");