【问题标题】:Warning: unexpected character in input: " (ascii=29) state=0 in警告:输入中出现意外字符:" (ascii=29) state=0 in
【发布时间】:2011-12-11 23:37:33
【问题描述】:

我一直在阅读其他人对这个错误所做的事情,并对我的 php.ini 文件进行了更改,添加了代码以覆盖另一个 php 设置,但最终还是出现了同样的错误。这是我的代码:

 <html>
 <body>
 <table>

 <?php error_reporting (E_ALL ^ E_NOTICE); ?>

 <?php

     function getRecords($query) {
         $con = mysql_connect("localhost", "movie", "moviepw");
         if (!$con)
         {
            die('Could not connect: ' . mysql_error());
         }

         mysql_select_db("movies", $con);

         $result = mysql_query($query);

         // THE ERROR IS REPORTED ON THIS LINE
         return $result;

}

          function buildQuery()  {

                    $keyword = $_GET['keyword'];

                    $sql = "SELECT * from movies WHERE
                            (
                            'movie_title' LIKE '%keyword%'
                            OR
                            'movie_description' LIKE '%keyword%'
                            )";

                    return $sql;  

        }

         $query = buildQuery();

         $records = getRecords($query);

         while($row = mysql_fetch_array($records)){ ?>

 <tbody>
          <table border='1'>

            <tr>
                   <td><?= $row['movie_title']; ?></td>
                   <td><?= $row['movie_rating']; ?></td>
                   <td> <img src="<?= $row['movie_image'];?>"> </td>
                   <td><?= $row['movie_description']; ?></td>
                   <td><a href="movie_index.php">Return to Search</a></td>
            </tr>

<? }  ?>

</tbody>

</table>
</body>
</html>

知道为什么会出现此错误吗?

【问题讨论】:

  • 请发布错误信息的其余部分。它在问题标题中被切断。具体来说,它发生在哪一行。
  • 总结一下:未公开的解释器(PHP 或 SQL)在未公开的行中抛出警告,因此您对 PHP 设置进行了一些未公开的更改,但无济于事。正确的? ;-P
  • 其余的错误是:C:\xampp\htdocs\movie_display.php on line 34
  • 是的,我进行了更改,但无济于事。 :-) 第 34 行是:return $result;
  • @CherylAnnCE:让您的编辑器直观地向您显示空格和制表符等字符。 29 看起来像一个空格,但不是一个。

标签: php mysql warnings


【解决方案1】:

编辑器添加了不可删除的空格。我不得不删除几行并重写它们。所以,这个问题不完全是代码......只是一个文本编辑器软件问题。

我遇到的另一个错误是我的查询出现布尔错误。原来我试图查询数据库而不是表。

感谢您对此的所有帮助!

【讨论】:

    【解决方案2】:

    从查询中的列名中删除单引号。如果 PHP 解释器仍在抱怨 ASCII 29,这可能不是唯一的错误。

                   $sql = "SELECT * from movies WHERE
                            (
                            'movie_title' LIKE '%keyword%'
                            OR
                            'movie_description' LIKE '%keyword%'
                            )";
    
                   // Should be
                   $sql = "SELECT * from movies WHERE
                            (
                            movie_title LIKE '%keyword%'
                            OR
                            movie_description LIKE '%keyword%'
                            )";
    

    【讨论】:

    • 非常感谢您的想法。我也试了一下,但问题实际上是我的编辑器奇怪地放置了一些空格并且不会删除。免费软件。 ;-P
    • 其实我应该说我解决了这个问题。也感谢您指出这个错误。
    猜你喜欢
    • 2015-12-24
    • 2014-07-23
    • 2013-06-13
    • 2017-09-05
    • 2012-10-18
    • 2013-09-14
    • 2019-01-05
    • 2015-11-02
    • 1970-01-01
    相关资源
    最近更新 更多