-2

私は完全に機能する小さなデータベースを持っています。正確に「Category」という名前のテーブルがあり、そのテーブルには正確に「Name」という名前の行があります。名前のすべてのバージョン (大文字化されていないもの) を試しましたが、関数が返してほしいものを返しません。明らかなエラーを見つけた人はいますか? データベースは問題なく接続されています...または、深刻な問題のあるdb-conflictを見ています。

これは、index.php に含めた私の functions.php で、本体で関数呼び出しを行いました。"<?php display_menus(); ?>

<?php 

//Connect to database

$link = mysqli_connect('localhost', 'root', 'root');
if (!$link)
{
    $output = 'Unable to connect to the database server.';
    echo $output;
    exit();
}

if (!mysqli_set_charset($link, 'utf8'))
{
    $output = 'Unable to set database connection encoding.';
    echo $output;
    exit();
}

if (!mysqli_select_db($link, 'Asperod6'))
{
    $output = 'Unable to locate the "Asperod6" database.';
    echo $output;
    exit();
}

    $output = 'Database connection established.';
    echo $output;

//Funktion som skriver ut meny


function display_menus()
{
    $result = mysqli_query($link, "SELECT * FROM Category");

    if (!$result)
        {
            $error = 'Error fetching Kategorier: ' . mysqli_error($link);
            echo ("There is none");
        }



        if (mysqli_num_rows($result) > 0) 
        {
            echo "<ul>";

            while ($row = mysqli_fetch_array($result)) 
            {
                echo "<li>" . $row['Name'] . "</li>";
            }

            echo "</ul>";

            mysqli_free_result($result);

        }

} 





mysqli_close($link);


?>
4

2 に答える 2

2

なんらかの理由で、実際のエラー メッセージを自分自身に表示していないか、php エラー レポートを有効にしていないためです。一方、PHP にエラーを通知させると、$link が未定義であると通知されます。

  1. 実際のエラーを表示する

    $result = mysqli_query($link, "SELECT * FROM Category"); 
    if (!$result) {
       trigger_error(mysqli_error($link));
    } 
    
  2. PHP レポート エラーを作成する

    ini_set('display_errors',1);
    error_reporting(E_ALL);
    
  3. 最後に、すべてのエラーが報告された後、関数内で$link グローバルを作成します

    function display_menus()
    {
        global $link;
        ...
    
于 2013-05-06T04:02:30.267 に答える