PHP意外的文件结束如何修复?

时间:2017-03-12 23:57:49

标签: php html mysqli php-7.1

继承我的代码:

<?php
$db = new mysqli('localhost', 'USER', 'PASS', 'DB') or die(mysql_error());

$output = '';

//collect
if(isset($_POST['search'])) {
  $searchq = $_POST['search'];
  $searchq = preg_replace("#[^0-9a-z]#i","",$searchq);

  $query = <<<SQL
    SELECT *
    FROM `users`
    WHERE `title`
    LIKE '%$searchq%'
    OR `last`
    LIKE '%$searchq%'
  SQL;

  $count = $db->query($query);
  if($count == 0) {
    $output = 'There was no search results!';
  }else{
    while($row = mysqli_fetch_array($count)) {
      $fname = $row('title');
      $lname = $row('last');
      $id = $row('id');

      $output .= '<div>'.$fname.' '.$lname.'</div>';
    }
  }

}

?>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="dcterms.created" content="Sat, 11 Mar 2017 00:48:58 GMT">
    <meta name="description" content="">
    <meta name="keywords" content="">
    <title>Search</title>

  </head>
  <body>



  <form action="index.php" method="post">
    <input type="text" name="search" placeholder="Search for Documents..." />
    <input type="submit" value=">>"></input>
  </form>

<?php 
print("$output"); 
?>
</body>
</html>

我不知道出了什么问题。我的文件保存为.php文件。我试了很多东西,但无法解决或发现错误。此脚本被用作基本搜索脚本,我无法测试它,因为我一直收到意外的文件结束错误。

3 个答案:

答案 0 :(得分:0)

认为$ query应该在&#39;里面&#34; &#39;,我怎么认为你工作得很好,所以我已经制作了.php,问题就在 $query = <<< SQL 附近,这应该是&#39; &LT;&LT; &#39;或者&#39; &LT; &#39;,试一试。 祝你好运

更新1 我引用了文档,而Heredoc要求密钥不应缩进以便使用 SQL; unindentend而不是(indent)SQL;

答案 1 :(得分:0)

替换它:

$query = <<<SQL
  SELECT *
  FROM `users`
  WHERE `title`
  LIKE '%$searchq%'
  OR `last`
  LIKE '%$searchq%'
SQL;

有了这个:

$query = "SELECT *
          FROM `users`
          WHERE `title` LIKE '%{$searchq}%' OR `last` LIKE '%{$searchq}%'";

答案 2 :(得分:0)

您的代码存在一些问题。

  1. 如果您要使用Heredoc,结束标识符必须是单独的(包括空格)。所以你需要把它带到边缘,例如。
  2. 不正确:

     SQL;
    

    正确:

    SQL;
    

    http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

    我还建议使用普通字符串。

    1. 访问数组中的值时,您需要使用方括号而不是括号,例如:

      $fname = $row['title'];
      
    2. 最后,我建议您考虑将params绑定到您的查询中。 http://php.net/manual/en/pdostatement.bindparam.php

      希望这有帮助!