【问题标题】:SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= '{search_term}''SQL 语法;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '= '{search_term}'' 附近使用的正确语法
【发布时间】:2014-03-11 01:46:21
【问题描述】:

我不能做实时搜索表的事情。有人能帮助我吗? 这是我的代码。我只想显示我搜索过的数据...................................... ..................................................... ..................................................... ..................................................... ..................................................... …………

<?php

//include the connection file
include "conn.php";
$sql = "SELECT * FROM tblreservation";
if (isset($_POST['search'])) {
    $search_term = mysql_real_escape_string($_POST['search_box']);
        $sql .= "WHERE Name = '{search_term}'";
}

$query = mysql_query($sql) or die(mysql_error());
 ?>
 <form name="search_form" method="POST" action="trys.php" align="center">
 Search: <input type="text" name="search_box" value="" />
 <input type="submit" name="search" value="Search the table...">
 </form>
 <table width="70%" cellpadding="5" cellspace="5">

 <tr>
<td>ID</td>
<td>Name</td>
<td>Email</td>
<td>Packages</td>
      <td><select name="Packages" class="fieldsize">
      <option value="">select package</option>
      <option value="budget" <?php if($valid_Packages=='budget') echo     "selected='selected'";?>>Budget</option>
      <option value="standard" <?php if($valid_Packages=='standard') echo "selected='selected'";?>>Standard</option>
      <option value="super" <?php if($valid_Packages=='super') echo "selected='selected'";?>>Super</option>
      <option value="mega" <?php if($valid_Packages=='mega') echo "selected='selected'";?>>Mega</option>
    </select>
    <span class="err"><?php echo $error["Packages"];?></span></td>
</tr>
<td>Contactno</td>
<td>Gender</td>
      <td><input type="radio" name="gender" value="male" <?php     if($valid_gender=='male') echo "checked='checked'";?> />
    Male
    <input type="radio" name="gender" value="female" <?php if($valid_gender=='female')    echo "checked='checked'";?>/>
    Female <span class="err"><?php echo $error["gender"];?></span></td>
<td>file</td>
      <td><input type="file" name="file" value="upload" />
    <span class="err"><?php echo $error["file"];?></span></td>
<td>Address</td>
</tr>
<?php while ($row = mysql_fetch_array($query)) { ?>
<td><?php echo $row['id']; ?> </td>
<td><?php echo $row['Name']; ?> </td>
<td><?php echo $row['Email']; ?> </td>
<td><?php echo $row['Packages']; ?> </td>
<td><?php echo $row['Contactno']; ?> </td>
<td><?php echo $row['Gender']; ?> </td>
<td><?php echo $row['file']; ?> </td>
<td><?php echo $row['Address']; ?> </td>
</tr>
<?php } ?>

</table>

【问题讨论】:

  • 尝试在“WHERE”之前添加一个空格 --> “WHERE”

标签: php jquery search


【解决方案1】:

您在这一行缺少$ 和一个空格:

$sql .= "WHERE Name = '{search_term}'";

正确的行应该如下:

$sql .= " WHERE Name = '{$search_term}' ";

您当前生成的 SQL 语句正是这样的:

SELECT * FROM tblreservationWHERE Name = '{search_term}'

另外,我建议在你的 if 语句中检查 $_POST['search_box'] 而不是 $_POST['search'] 的存在,并且在附加它之前它实际上有一个值,因为这是你真正想要在查询中使用的值:

if (isset($_POST['search_box']) && $_POST['search_box']) {
    $search_term = mysql_real_escape_string($_POST['search_box']);
    $sql .= " WHERE Name = '{$search_term}' ";
}

【讨论】:

  • 需要注意的是 mysql_* 已被弃用,此代码易受注入攻击。
  • mysql_real_escape_string() 应该否定 SQL 注入攻击,除非库中存在任何未修复的错误,但我同意 mysql_*() 已弃用,并且此类错误可能无法修复。我建议 OP 将代码切换为使用 mysqli_*PDO
  • $sql$query = mysql_query($sql) or die(mysql_error()); 之前的内容是什么?
猜你喜欢
  • 2016-08-06
  • 2012-05-02
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多