-6

任何想法为什么这没有列出我的数据库的内容?我认为 id 应该做的...是打印出内容列表(是作者、标题、类别、年份和 ISBN)。但我什么也没得到。没有错误或任何东西......即使我在那里放了一个回声语句,似乎没有任何东西打印到屏幕上......

<?php // query.php
require_once 'login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);

if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());

$query = "SELECT * FROM classics"; 
$result = mysql_query($query);

if (!$result) die ("Database access failed: " . mysql_error()); 

$rows = mysql_num_rows($result);

for ($j = 0; $j < $rows; ++$j)
{
echo 'Author' . mysql_result($result,$j,'author') . '<br />';
echo 'Title' . mysql_result($result,$j,'title') . '<br />';
echo 'Category' . mysql_result($result,$j,'category') . '<br />';
echo 'Year' . mysql_result($result,$j,'year') . '<br />';
echo 'ISBN' . mysql_result($result,$j,'isbn') . '<br />';
} 
?>
4

2 回答 2

0

要在 php 中加入字符串变量,您应该这样做:

$my_bigger_string="some string variable" . $my_string . "some more words";

尝试将其应用于所有字符串,看看会发生什么。

于 2013-07-08T21:11:06.393 回答
0

您的最新版本存在多个问题:

问题#1: 您应该使用一些变体来从mysql_query()mysql_fetch_返回的资源中获取行。使用可能效率低下。通常,人们使用mysql_fetch_assoc()。这将返回一个数组,然后您可以使用其键访问该数组,这取决于您使用的函数。例如,如果您尝试获取以当前行命名的列,则希望通过将其用作数组的键来检索该列。mysql_resultmysql_fetch_'id''id'

问题#2: 你的循环是错误的。 for ($j = 0; $j < $rows; ++$i)应该是for ($j = 0; $j < $rows; ++$j)。请注意++$i已更改为++$j。否则,您将陷入无限循环(直到 PHP 达到超时)。

问题 #3: mysql_num_rows()可以返回 FALSE。根据文档,该函数将在失败时返回行数或 FALSE。虽然 FALSE 可以强制转换为整数 0,但我不喜欢依赖这个。

另外,如果您购买了这本书,我希望您没有为它支付全价。这些mysql_方法已被弃用。因此,改用mysqliPDO扩展更有用。


根据您的最新编辑,您已解决问题 #2。在进入循环之前添加var_dump($rows);一行 *以仔细检查您有超过 0 行。

另外,您检查过错误日志吗?找到您的错误日志,看看它是否在那里而不是您的浏览器上显示错误。这可以解释为什么您会看到白屏。

于 2013-07-08T21:28:39.327 回答