我有一段PHP代码,它通过AJAX调用以将值插入表中,然后返回该表中匹配值的列表。插入查询运行得很好,但select查询不返回任何内容。如果我进入phpmyadmin并手动运行select查询,我会得到预期的结果集,但在PHP代码中,fetch_assoc()返回null。我已经确认所有变量都正确传递,但代码从不进入while循环,因为在集合中没有结果。以下是一组相关的代码:PHP Mysqli不返回任何行,而手动SQL查询返回结果
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();
}
这和另外一个功能(这是几乎相同,但做了删除,而不是INSERT的)是我的代码只有那些有这个问题。我有十几个正常工作的其他查询,包括在运行良好的代码的不同部分中执行相同的SELECT查询,所以这非常令人费解。
假设你一切正常。你不认为你的'$ query'变量可能具有值'FALSE'? :) –
不。我已经使用php mail()函数在不同位置测试了代码,以向我发送相关变量。 $ query绝对是真的,因为如果我把它放在if($ query)语句中,mail()会给我发一封邮件,但如果我把它放在while语句中,则不会。 – NeuroXc
然后你应该在那里添加一些错误检查,看看你是否得到一个MySQL错误。 –