在php中使用搜索框筛选表数据

在php中使用搜索框筛选表数据,php,html,Php,Html,我正在使用PHP创建一个提醒系统 我的PHP代码有一个错误,希望有人能帮我解决。好的,我先解释一下情况。我的数据库有两个表,一个是用户信息,另一个是事件信息 事件信息表详细信息 eventid(int)10自动递增, 电子邮件(varchar)40 eventname(varchar)30 描述(varchar)150 类别(varchar)10 日期(日期) 用户登录后,可以使用其电子邮件地址添加事件。用户需要查看他们的事件。因此,当我访问“userprofile”时,我创建了一个名为“use

我正在使用PHP创建一个提醒系统

我的PHP代码有一个错误,希望有人能帮我解决。好的,我先解释一下情况。我的数据库有两个表,一个是用户信息,另一个是事件信息

事件信息表详细信息

eventid(int)10自动递增, 电子邮件(varchar)40 eventname(varchar)30 描述(varchar)150 类别(varchar)10 日期(日期)

用户登录后,可以使用其电子邮件地址添加事件。用户需要查看他们的事件。因此,当我访问“userprofile”时,我创建了一个名为“userprofile”的php页面,它使用电子邮件过滤eventinfo表并返回用户事件。现在我想添加一个过滤器来过滤这些数据。但当我尝试使用搜索框过滤数据时,它会给出一个错误。(错误是:mysql\u real\u escape\u string()期望参数1为string)以下是代码

    <?php
    session_start();
    $email=$_SESSION['user'];


    mysql_connect("localhost","root","") or die(mysql_error()); 
    mysql_select_db("reminder") or die(mysql_error()); 

    $sql = "SELECT * FROM eventinfo WHERE email = '{$email}'";

    if(isset($_POST['search'])){

        $search_term = mysql_real_escape_string(['search_box']);

        $sql .= "WHERE eventname = '{$search_term}' ";
        $sql .= "or Category = '{$search_term}'";

    }

    $query = mysql_query($sql) or die(mysql_error());


?>

<form name="search_form" method="POST" action="userprofile.php">

search: <input type="text" name="search_box" value="" />
<input type="submit" name="search" value="search">
</form>


<table>
<table width"120%" cellpadding="10" cellspace="10">

    <td><Strong>Event Name</strong></td>
    <td><strong>Event Date</strong></td>
    <td><strong>Category</strong></td>
    <td><strong>Description</strong></td>



<tr>
</tr>
<?php while ($row = mysql_fetch_array($query)) { ?>
<tr>
    <td><?php echo $row ['eventname']; ?></td>
    <td><?php echo $row ['date']; ?></td>
    <td><?php echo $row ['Category']; ?></td>
    <td><?php echo $row ['descryption']; ?></td>

</td>
<?php } ?>


</table>

由于您对“评论”框中的内容没有响应,因此您可能会收到带有实际“答案”的通知

产生错误的原因,正如André所说,是您给它的是一个列表而不是一个字符串,它需要由
$\u POST
指令处理

更改:

$search_term = mysql_real_escape_string(['search_box']);
致:


脚注:

mysql.*
函数弃用注意事项:

从PHP5.5.0开始,此扩展就不推荐使用,不建议用于编写新代码,因为它将在将来被删除。相反,应该使用或扩展名。在选择MySQL API时,请参阅以获取更多帮助

这些函数允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»


MySQL的文档可以在»找到。

MySQL\u real\u escape\u string(['search\u box'])
如果给它一个列表,它需要一个字符串。我想你应该给它
$\u POST['search\u box']
。此外,如果未正确验证
$email
,则此代码可能容易受到SQL注入的攻击。而
mysql
已被弃用,请使用
mysqli
PDO
^-«这将转换为:更改
$search\u term=mysql\u real\u escape\u字符串(['search\u box'])
$search\u term=mysql\u real\u escape\u字符串($\u POST['search\u box'])---使用错误报告
错误报告(E_ALL);ini设置(“显示错误”,1)
$search_term = mysql_real_escape_string($_POST['search_box']);