-2

テーブルに値を挿入し、そのテーブルから一致する値のリストを返すために AJAX を介して呼び出される PHP コードのブロックがあります。挿入クエリは正常に実行されますが、選択クエリは何も返しません。phpmyadmin にアクセスして選択クエリを手動で実行すると、期待どおりの結果セットが得られますが、PHP コードでは fetch_assoc() が null を返します。すべての変数が正しく渡されていることを確認しましたが、セットに結果がないため、コードが while ループに入ることはありません。以下は、関連するコードのセットです。

if (isset($_POST['action']) && $_POST['action'] == "link" && !empty($_POST['link_id']) && !empty($_POST['cat_id'])) {
    require_once(realpath(dirname(__FILE__)) . "/../config/config.php");
    $link_id = (int)$_POST['link_id'];
    $category_id = (int)$_POST['cat_id'];
    $query = $conn->query("INSERT INTO links_to_categories (link_id, category_id) VALUES ({$link_id}, {$category_id})");
    if ($query) {
        $cats = $conn->query("SELECT * FROM links_to_categories lc LEFT JOIN categories c ON lc.category_id = c.category_id WHERE lc.link_id = {$link_id}");
        while ($cat = $cats->fetch_assoc()) {
            echo "{$cat['category_name']} (<a href=\"#\" onclick=\"unlinkCategory({$link_id}, {$category_id});return false;\">x</a>)<br>";
        }
    }
    die();
}

これと他の 1 つの関数 (ほとんど同じですが、INSERT の代わりに DELETE を実行します) は、私のコードでこの問題を抱えている唯一のものです。正常に動作するコードの別の部分にある同じ SELECT クエリを含め、適切に動作しているクエリが他にもたくさんあるので、これは非常に不可解です。

4

1 に答える 1