当我运行这个PHP代码时,没有任何内容打印到屏幕上

时间:2013-07-08 21:01:16

标签: php html mysql

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

<?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 />';
} 
?>

2 个答案:

答案 0 :(得分:0)

要在php中连接字符串变量,你应该这样做:

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

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

答案 1 :(得分:0)

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

问题#1: 您应该使用mysql_fetch_的某种变体来从mysql_query()返回的资源中获取行。使用mysql_result可能效率低下。通常,人们使用mysql_fetch_assoc()。这将返回一个数组,然后您可以使用其键访问该数组,这取决于您使用的mysql_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行。

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