1

私のデータベースフィールドは入力されていませんが、ページはそれが存在することを確認しています。したがって、最初のSQLは機能していますが、2番目の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);
4

2 に答える 2

1

whileステートメントの後のセミコロンは、次のエンクロージャーを実行しないため、削除する必要があります(つまり、クエリは正常ですが、whileステートメントは無効です)。

また、よくわかりませんが、次のステートメントがあります。

$id     =     $db_field['ID'];

mysqlフィールドが'id'(小文字)の場合、エラーが生成される可能性があります。MySQLは(通常)大文字と小文字を区別しませんが、php配列キーは大文字と小文字を区別するため、キーは「id」としてのみ使用可能であり、「ID」としては使用できない可能性があります...

于 2012-07-11T19:50:52.867 に答える
0

null以外に設定されたリレーショナルデータベーステーブルの空のフィールド(1つの黒いフィールドのみ)が、この未定義のブレークエラーを引き起こしていたことが判明しました。ホームページを除くすべてのページで。

私を助けてくれたすべての人に感謝します。

于 2012-07-11T20:29:32.043 に答える