第一部分如下。下面是第二部分:
我使用了下面提供的代码。我移动了一些东西,去掉了所有的错误。但是,现在我的数据丢失了。我得到了带有标题的表格,它们是可点击的(然而,没有表格就不可能看到点击会发生什么)。有人能看出我做错了什么让数据无法显示出来吗?
<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也很生疏,所以这是一个真正的初学者问题。下面是正在进行的代码。但请注意,这不是我的完整代码。我尝试了很多不同的东西,我得到了这个语法错误:
解析错误:语法错误,unexpected '?' in C:xampphtdocsmoviedata3.php on line 30
就我所知,我需要那个"?"
那么,这就是全部内容:
<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>
非常感谢!
看来你没有注意应该在哪里执行什么。查询DB是服务器端代码,点击按钮(在您的情况下列标题)是客户端。
所以试着用这样的方式重写你的片段:
<?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>
我相信你的问题是从这一行开始的:
echo "<table border='1'
你正在使用双引号打开一个字符串,但它没有找到匹配的双引号,直到它到达:
<a href="<?
它以"作为字符串的结尾,然后是<作为操作员。下一个角色是意想不到的?>
如果你修改你的代码,使引号是正确的,问题就会消失。
代码中还有许多其他问题。例如,在循环外打开一个<tr>
,但在循环内关闭它。至于循环中的mysql_query()
调用…我不知道你从哪里抄来的代码,但我觉得它很可疑。它不会返回一个字符串来回显,作为开始,而是一个资源;$result
变量在双引号中,这意味着它们会被插入。正如其他人所说,这是一个烂摊子,你最好找到另一个例子来解决你的问题。