0

第一部分如下。这是第二部分:

我使用了下面提供的代码。我移动了东西并摆脱了所有错误。但是,现在我的数据丢失了。我得到带有标题的表格,它们是可点击的(但是,没有表格,就不可能看到点击会发生什么)。谁能看到我做错了什么导致数据无法显示?

 <html>

 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);
     return $result;

     function buildQuery($sortOrder) {
             $so = mysql_real_escape_string($sortOrder);
             $so = $so ? $so : "movie_title";
             return "SELECT * FROM table1 ORDER BY " + $so;
 }

     ?>

     </thead>
      <tbody>

      <?
                $sortOrder = $_GET['sortOrder'];

           $query = buildQuery($sortOrder);

           $records = getRecords($query);
 ?>

      <?

     while($row = mysql_fetch_array($result)){ ?>
               <tr>
               <td><?= $row['movie_title']; ?></td>
               <td><?= $row['movie_rating']; ?></td>
               <td> <img src="<?= $row['movie_image'];?>"> </td>
               <td><?= $row['movie_description']; ?></td>
      </tr>

 <table border='1'>
      <thead>
             <tr>
                    <th><a href="?sortOrder=movie_title">Title</a></th>
                    <th><a href="?sortOrder=movie_rating">Rating</a></th>
                    <th>Image</th>
                    <th><a href="?sortOrder=movie_description">Description</a></th>

             </tr>

</table>
</body>

谢谢!

第一部分:

我是 PHP 的新手,对 HTML 很生疏,所以这是一个真正的初学者问题。这是正在进行的代码。但请注意,这不是我的完整代码。我正在尝试很多不同的东西,但我收到了这个语法错误:

解析错误:语法错误,意外的“?” 在第 30 行的 C:\xampp\htdocs\moviedata3.php

据我所知,我需要那个“?”。

所以,这是整个事情:

<html>
<body>
<table>

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

mysql_select_db("movies", $con);

$result = mysql_query("SELECT * FROM table1");

echo "<table border='1'
<tr>

?>

<?php

while($row = mysql_fetch_array($result))
  {

  ?>

   <? { ?>

   <a href="<?= mysql_query("SELECT * FROM table1 ORDER BY movie_title") ?>"><th>Title</th></a>

   <a href="<?php echo("$PHP_SELF?execute=$result = mysql_query("SELECT * FROM table1 ORDER BY movie_rating")") ?>"><th>Rating</th></a>

   <a href="<?php echo("$PHP_SELF?execute=$result = mysql_query("SELECT * FROM table1 ORDER BY movie_image")") ?>"><th>Image</th></a>

   <a href="<?php echo("$PHP_SELF?execute=$result = mysql_query("SELECT * FROM table1 ORDER BY movie_description")") ?>"><th>Description</th></a>

  </tr>";

<? } ?>

  <tr>
 <td><?= $row['movie_title']; ?></td>
 <td><?= $row['movie_rating']; ?></td>
 <td> <img src="<?= $row['movie_image'];?>"> </td>
 <td><?= $row['movie_description']; ?></td>
 </tr>

 <?
  }
echo "</table>";

mysql_close($con);
?>

    </td></tr>
</table>
</body>
</html>

第 30 行是这样的:

<a href="<?= mysql_query("SELECT * FROM table1 ORDER BY movie_title") ?>"><th>Title</th></a>

非常感谢!!!

4

2 回答 2

2

似乎你没有注意应该在哪里执行什么。查询数据库是服务器端代码,单击按钮(在您的情况下为列标题)是客户端。

所以试着用这样的方式重写你的片段:

 <?php

     function buildQuery($sortOrder) {
        $so = mysql_real_escape_string($sortOrder);
        $so = $so ? $so : "movie_title";
        return "SELECT * FROM table1 ORDER BY " + $so;
     }

     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);
         return $result;
     }

     $sortOrder = $_GET['sortOrder'];

     $query = buildQuery($sortOrder);

     $records = getRecords($query);
     ?>
     <table border='1'>
          <thead>
                 <tr>
                        <th><a href="?sortOrder=movie_title">Title</a></th>
                        <th><a href="?sortOrder=movie_rating">Rating</a></th>
                        <th>Image</th>
                        <th><a href="?sortOrder=movie_description">Description</a></th>

                 </tr>
          </thead>
          <tbody>
    <?php

     while($row = mysql_fetch_array($result)){ ?>
          <tr>
          <td><?= $row['movie_title']; ?></td>
          <td><?= $row['movie_rating']; ?></td>
          <td> <img src="<?= $row['movie_image'];?>"> </td>
          <td><?= $row['movie_description']; ?></td>
          </tr>

    <? } ?>
          </tbody>
    </table>
于 2011-10-10T19:55:30.613 回答
2

我相信你的问题是从这条线上开始的:

echo "<table border='1'

您正在使用双引号打开一个字符串,但在它到达之前找不到匹配的双引号:

<a href="<?

它将 " 作为字符串的结尾,然后将 < 作为运算符。下一个字符是意外的?

如果您修复代码以使引号正确,则问题应该消失。

但是代码中还有许多其他问题。例如,您在<tr>循环外部打开一个,但在循环内部关闭它。至于mysql_query()循环内的调用......我不知道你从哪里复制了代码,但它看起来对我来说绝对是狡猾的。首先,它不会返回要回显的字符串,而是资源;并且$result变量用双引号括起来,这意味着它们将被插值。正如其他人所说,这是一团糟,你最好找到另一个例子来作为你的解决方案的基础。

于 2011-10-10T19:55:57.957 回答