【发布时间】:2013-11-01 05:43:01
【问题描述】:
我有一段 PHP 代码,它通过 AJAX 调用以将值插入表中,然后从该表中返回匹配值的列表。插入查询运行良好,但选择查询不返回任何内容。如果我进入 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();
}
这个和另一个函数(几乎相同,但执行的是 DELETE 而不是 INSERT)是我的代码中唯一存在此问题的函数。我还有十几个正常工作的查询,包括在代码的不同部分运行正常的相同 SELECT 查询,所以这非常令人费解。
【问题讨论】:
-
假设你做的一切都是正确的。您不认为您的
$query变量可能具有FALSE的值吗? :) -
没有。我已经在不同位置使用 php mail() 函数测试了代码,以向我发送相关变量。 $query 绝对正确,因为如果我将 mail() 放在 if ($query) 语句中,它会发送给我一封邮件,但如果我将它放在 while 语句中则不会。
-
然后你应该在那里添加一些错误检查,看看你是否遇到了 MySQL 错误。
-
我尝试查看$conn->error的结果,返回一个空字符串,说明没有错误。对于它的价值,如果我 print_r($cats),如果出现错误,我不会得到 False。相反,我得到了这个:
{"current_field":null,"field_count":null,"lengths":null,"num_rows":null,"type":null}