テーブルに値を挿入し、そのテーブルから一致する値のリストを返すために 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 クエリを含め、適切に動作しているクエリが他にもたくさんあるので、これは非常に不可解です。