0

私は PHP/mySQL の初心者で、楽しんでいますが、行き詰まっています... 私は、最初のデータベース駆動型 Web サイトを開発中です。データベース、テーブルを作成しました...特に1つのテーブルにコンテンツをロードして、PHP経由でデータを取得しようとしました。ブラウザ経由で私のウェブサイトにライブでアクセスすると、ナビゲーション システムは動作しているように見えますが、db テーブルからコンテンツをロードしていません。アドレスバーのページを変更するナビゲーションシステムを備えた空白のコンテンツですが、空白のコンテンツです。データを取得しようとしているデータベース内のテーブルの画像ショットと一緒にコードを提供しました。私が取得している db テーブルは vls_pages と呼ばれます。こちらも画像のテーブルです。誰かがこれを正しく機能させるように教えてくれることを願っています。みんなありがとう

index.php コード:

<?php
// Load Setup document:
include
('_config/setup.php'); ?>

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title><?php echo $page_title; ?></title>

<link rel="stylesheet" type="text/css" href="_css/styles.css">

</head>

<body>

<div class="wrap_overall">



    <div class="nav_main">
        <?php include('_template/nav_main.php'); ?>
    </div>

    <div class="body_header">
        <?php get_page_name($dbc, $pg); ?>
    </div>   

    <div class="content">
        <?php get_page_body($dbc, $pg); ?>    
    </div>

    <div class="footer">
        <?php include('_template/footer.php'); ?>
    </div>

</div>

</body>

</html>

setup.php コード:

<?php
## Setup Document

// host(or location of the database), username, password, database name

        //Variables for connecting to your database.

    //These variable values come from your hosting account.

        $hostname = "***************";
                    $username = "***************";
                    $password = "***************";

        //Connecting to your database

$dbc = @mysqli_connect($hostname, $username, $password) OR DIE ("Unsuccessful.");

        // Check connection
       if (mysqli_connect_errno($dbc))
{
       echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

       include('_functions/snippets.php');

       if ($_GET['pgname'] == '') {
        $pg = 'home';
           }

       else {
        $pg = $_GET['pgname'];
}

        $page_title = get_page_title($dbc, $pg);

?>

snippets.php コード:

<?php

// Snippets; Functions

function get_page_title ($dbc, $pg) {

$query = "SELECT pgtitle FROM vls_pages AND pgstatus = 1 LIMIT 1";
$result = @mysqli_query($dbc, $query);
$page = @mysqli_fetch_assoc($result);

return $page['pgtitle'];

@mysqli_close($dbc);

}

function get_page_name ($dbc, $pg) {

$query = "SELECT pgname FROM vls_pages WHERE pgname = '$pg' AND pgstatus = 1 LIMIT 1";
$result = @mysqli_query($dbc, $query);
$page = @mysqli_fetch_assoc($result);

echo '<h1>'.$page['pgname'].'</h1>';

@mysqli_close($dbc);

}

function get_page_body ($dbc, $pg) {

// the database connection, our query

$query = "SELECT * FROM vls_pages WHERE pgbody = '$pg' AND pgstatus = 1 LIMIT 1";
$result = @mysqli_query($dbc, $query);
$page = @mysqli_fetch_assoc($result);

echo '<div class="content">'.$page['pgbody'].'</div>';

@mysqli_close($dbc);

}

?>
4

3 に答える 3

2

各関数の最後にデータベース接続を閉じています。したがって、ページ タイトルを取得すると、データベース接続が閉じます。

setup.php のすべての関数の末尾から次の行を削除します。

@mysqli_close($dbc);

次に、その行を index.php の最後に追加して、ページの処理が完了した後に接続を閉じます。

<?php
mysqli_close($dbc);
?>

これにより、質問で説明されている主要な問題が解決されます。完全を期すために、質問のコメント領域の推奨事項にも従う必要があります。具体的には、get_page_title() の SQL クエリは、「AND」ではなく「WHERE」を使用し、「@」エラー抑制を削除する必要があります。特に学習中は注意が必要です。

于 2013-10-21T17:55:45.403 に答える
0

MySQL.comSELECT Web サイトのマニュアルの構文に従ってください。

構文は次のとおりです。SELECT select_expr FROM table_references WHERE where_condition equals

さて、この行はAND句を使用しています:

SELECT pgtitle FROM vls_pages AND pgstatus = 1 LIMIT 1

WHERE次のような句を使用する必要があります。

SELECT pgtitle FROM vls_pages WHERE pgstatus = 1 LIMIT 1

思考の糧:

入力内容を適切にサニタイズする際は、コメントを (真剣に) 考慮してください。

于 2013-10-21T18:26:42.997 に答える
0

クエリに誤りがあります。条件を維持するのを忘れていましwhereた。次のコードを置き換えてください

$query = "SELECT pgtitle FROM vls_pages AND pgstatus = 1 LIMIT 1";

$query = "SELECT pgtitle FROM vls_pages where pgstatus = 1 LIMIT 1";

于 2013-10-21T18:00:16.307 に答える