3

「catalog」というデータベースと「categories」というテーブルがあります。テーブルには、categoryId、categoryName、parentCategoryの順に3つの列があります。parentCategory='root'を持つ各行のcategoryIdとcategoryNameを取得しようとしています。簡単なクエリだと思いましたが、「クエリを実行できませんでした」というメッセージが表示され続けるため、何か問題が発生しているようですが、mysqlエラーは表示されません。以下にコードを投稿しました。誰かが私をまっすぐに向けることができますか?

PS私は$db変数に値を割り当てています。ここには含めませんでした。

<?php
$connect = mysqli_connect($db_host,$db_user,$db_password,$db_database)
    or die ("Couldn't connect to server: ".mysqli_error());

function display_children($parent) {
    $query = "SELECT categoryId, categoryName FROM `categories` WHERE parentCategory=".$parent;
    $result = mysqli_query($connect,$query)
        or die ("Couldn't execute query: ".mysqli_error());

    echo "<ul>";
    while ($row = mysqli_fetch_assoc($result)) {
          echo "<li>".$row['categoryName']."</li>";
          display_children($row['categoryId']); 
    }
    echo "</ul>";
    mysqli_close($connect);
}

?>

<div class="menu">    
<?php
    /* Menu Write */
    display_children("root");
?>
</div>
4

3 に答える 3

6

display_children()関数は$connect変数にアクセスできません。

これを試して:

function display_children($parent) {
    global $connect;
    $query = "SELECT categoryId, categoryName FROM `categories` WHERE parentCategory=".$parent;
    $result = mysqli_query($connect,$query)
        or die ("Couldn't execute query: ".mysqli_error());

    echo "<ul>";
    while ($row = mysqli_fetch_assoc($result)) {
          echo "<li>".$row['categoryName']."</li>";
          display_children($row['categoryId']); 
    }
    echo "</ul>";
    mysqli_close($connect);
}
于 2012-11-28T21:15:11.943 に答える
0

mysqli_error()パラメータとしてデータベースとのリンクが必要です。

したがって、エラーのコードは次のようになります。

or die ("error: " +mysqli_error($connect));

これについてもここで説明します:http: //php.net/manual/en/mysqli.error.php

たぶんこれはエラー報告に役立ちます...

于 2012-11-28T21:01:16.737 に答える
-1

クエリでの値を引用するだけでよいと$parent思います。

$query = "SELECT categoryId, categoryName FROM `categories` 
          WHERE parentCategory = '" . $parent . "'";

お役に立てれば!

于 2012-11-28T21:00:16.140 に答える