警告:输入中出现意外字符:“(ascii = 29)state = 0 in

时间:2011-10-20 17:17:06

标签: php mysql warnings

我一直在阅读其他人对此错误做了什么,并对我的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>

知道我为什么会收到此错误?

2 个答案:

答案 0 :(得分:7)

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

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

感谢您的帮助!

答案 1 :(得分:1)

从查询中的列名中删除单引号。如果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%'
                        )";