【问题标题】:Error in SQL syntaxSQL 语法错误
【发布时间】:2015-03-22 02:51:42
【问题描述】:
$query = "SELECT * FROM guest WHERE ";
if ($_POST['include2'] == "yes") {
$guestNameLast = isset($_POST['guestNameLast']) ? $_POST['guestNameLast'] :     '';
$query .= "guestNameLast LIKE '%$guestNameLast%' ";
$msg .="guest that <b>" . $guestNameLast . "</b><br/>";

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'guestNameLast LIKE '%%'' 附近使用正确的语法。 如何解决此错误?

【问题讨论】:

  • 在 $query 运行之前打印/记录它,这样您就可以看到生成的 SQL 是什么

标签: php mysql sql syntax sql-like


【解决方案1】:

在 If 条件中添加 WHERE 子句和 AND 还检查 $_POST['guestNameLast'] 不为空

$query = "SELECT * FROM guest WHERE 1 ";
if ($_POST['include2'] == "yes") 
{
if(isset($_POST['guestNameLast']) && ($_POST['guestNameLast'] != ""))
 {
 $guestNameLast = trim($_POST['guestNameLast']);
$query .= " AND guestNameLast LIKE '%$guestNameLast%' ";
 }


$msg .="guest that <b>" . $guestNameLast . "</b><br/>";

【讨论】:

    【解决方案2】:

    如果只有guestNameLast,则添加 WHERE 子句

    $query = "SELECT * FROM guest";
    
    if ($_POST['include2'] == "yes") {
    
    $guestNameLast = '';
    if(isset($_POST['guestNameLast']) && trim($_POST['guestNameLast']))
    {
        $guestNameLast = trim($_POST['guestNameLast']);
        $query .= " WHERE  guestNameLast LIKE '%$guestNameLast%' ";
    }
    
    $msg .="guest that <b>" . $guestNameLast . "</b><br/>";
    

    【讨论】:

      【解决方案3】:

      在 where 子句中添加条件。所以如果$_POST['guestNameLast'] 为空,它不会抛出错误:

      $query = "SELECT * FROM guest WHERE 1=1 ";
      if ($_POST['include2'] == "yes") {
      $guestNameLast = isset($_POST['guestNameLast']) ? $_POST['guestNameLast'] :     '';
      $query .= " AND guestNameLast LIKE '%$guestNameLast%' ";
      $msg .="guest that <b>" . $guestNameLast . "</b><br/>";
      

      【讨论】:

        【解决方案4】:

        错误即将到来,因为如果post 数据不可用,则WHERE 将出现在查询中。尝试使用 -

        $query = "SELECT * FROM guest ";
        if ($_POST['include2'] == "yes") {
        $guestNameLast = isset($_POST['guestNameLast']) ? $_POST['guestNameLast'] :     '';
        $query .= " WHERE ";
        $query .= "guestNameLast LIKE '%$guestNameLast%' ";
        $msg .="guest that <b>" . $guestNameLast . "</b><br/>";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-31
          • 2015-04-04
          • 2016-12-13
          相关资源
          最近更新 更多