我正在使用PHP创建一个Reminder系统。
我的PHP代码出错,希望有人能为我解决。好的,我首先要解释一下情况。我有两个表的数据库,一个包含用户信息,另一个包含事件信息。
活动信息表详情
eventid(int)10自动增量, 电子邮件(varchar)40 eventname(varchar)30 descryption(varchar)150 类别(varchar)10 日期(日期)
用户登录后,可以使用他的电子邮件地址添加活动。用户需要查看他们的活动。所以我创建了一个名为" userprofile"的PHP页面。当我访问" userprofile"它使用电子邮件过滤eventinfo表并返回用户事件。现在我想添加一个过滤器来过滤这些数据。但是,当我尝试使用搜索框过滤数据时,它会出错。 (错误是:mysql_real_escape_string()期望参数1为字符串)以下是代码
<?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>
先谢谢
答案 0 :(得分:0)
由于您没有回复评论框中的内容,因此您可能会收到实际“回答”的通知。
错误的原因和André所说的是,你给它一个列表而不是一个字符串,需要由$_POST
指令处理。
变化:
$search_term = mysql_real_escape_string(['search_box']);
为:
$search_term = mysql_real_escape_string($_POST['search_box']);
<强>脚注:强>
mysql_*
函数弃用通知:
http://www.php.net/manual/en/intro.mysql.php
从PHP 5.5.0开始,不推荐使用此扩展,不建议用于编写新代码,因为将来会删除它。相反,应使用mysqli或PDO_MySQL扩展名。在选择MySQL API时,另请参阅MySQL API Overview以获得进一步的帮助。
这些功能允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/。
可以在»http://dev.mysql.com/doc/找到MySQL的文档。