PHP显示但未获取数据库字段时没有错误


PHP no error displaying but not getting db fields

我的数据库字段没有填充,但页面正在确认它存在。因此,第一个SQL正在工作,但第二个SQL没有提取信息。如果我把这一页拿出来看看。它找不到页面并重定向到page_not_found。我说得对吗?我在这里做错了什么?

//get page url and query db
$this_page = $_GET['page'];
$this_page = escape_data($_GET['page']);
//Make sure page exist
$SQL_page_exist = "SELECT page_title FROM learn_more WHERE page_title = '$this_page'";
$SPE_result = mysql_query($SQL_page_exist);
if(mysql_num_rows($SPE_result) == 0) 
{
    echo '<META HTTP-EQUIV="Refresh" Content="0; URL=page_not_found.php">';
}
else {
$SQL = 
   "SELECT  * FROM learn_more AS lm 
INNER JOIN  learn_more_to_reference_key AS lmtrk 
        ON  lm.id = lmtrk.learn_more_id 
INNER JOIN  reference_keys AS rk 
        ON  rk.keys_id = lmtrk.reference_key_id
     WHERE  page_title = '$this_page'";
$result = mysql_query($SQL);
while ($db_field = mysql_fetch_assoc($result));
{   
        $id               =     $db_field['ID'];
        $main_title       =     $db_field['main_title'];
        $main_content     =     $db_field['main_content'];
        $reference_keys   =     $db_field['keys_href']; 
        $sub_title        =     $db_field['sub_title'];
        $sub_content      =     $db_field['sub_content'];
}
}
mysql_close($dbc);

您应该删除while语句后面的分号,因为它不会执行下面的外壳(这意味着您的查询很好,但while语句无效)。

此外,我不确定,但声明:

$id     =     $db_field['ID'];

如果mysql字段为"id"(小写),则可能会生成错误。虽然MySQL(通常)不区分大小写,但php数组键是区分大小写的,所以该键可能只作为"id"而不是"id"可用。。。

事实证明,关系数据库表中的一个空字段(只有一个黑色字段)被设置为非null,导致了这个未定义的中断错误。。在除主页外的所有页面上。。

感谢所有试图帮助我的人。