php - Ajax 和 PHP : MySQL Query Not Fetching Any Rows

标签 php mysql ajax jquery

我设置了 3 个组合框来过滤来自 MySQL 数据库的结果。加载时,所有结果都按正确顺序显示,但是当我尝试从 3 个组合框中选择任意 1 个,或从 3 个组合框中选择任意 2 个时,没有显示任何结果(行)。如果我选择所有 3 个组合框,则会显示结果。

我希望有人能找出我的查询代码有什么问题。我已经尝试了一切,似乎找不到任何问题。我也想知道我是否以最好的方式做这件事。我是 PHP 的新手,所以我不知道所有可用的不同方法。

PHP:

//Define Refine Data Values
$imgFamily = $_GET['imgFamily'];
$imgClass = $_GET['imgClass'];
$imgGender = $_GET['imgGender'];



//Define Refine Values as True of False
$imgFamilyTrue = (($imgFamily != 1) || ($imgFamily != null));
$imgFamilyFalse = (($imgFamily == 1) || ($imgFamily == null));

$imgClassTrue = (($imgClass != 1) || ($imgClass != null));
$imgClassFalse = (($imgClass == 1) || ($imgClass == null));

$imgGenderTrue = (($imgGender != 1) || ($imgGender != null));
$imgGenderFalse = (($imgGender == 1) || ($imgGender == null));



include"db.php";

//Database queries based on refine selections
if($imgFamilyFalse && $imgClassFalse && $imgGenderFalse) {
    $query_pag_data = "SELECT `imgURL`,`imgTitle` FROM `images` ".
    "ORDER BY `imgDate` DESC";

} else if($imgFamilyTrue && $imgClassTrue && $imgGenderTrue) {
    $query_pag_data = "SELECT `imgURL`,`imgTitle` FROM `images` WHERE imgFamily='$imgFamily' AND imgClass='$imgClass' AND imgGender='$imgGender' ".
    "ORDER BY `imgDate` DESC";

} else if($imgFamilyTrue && $imgClassFalse && $imgGenderFalse) {
    $query_pag_data = "SELECT `imgURL`,`imgTitle` FROM `images` WHERE imgFamily='$imgFamily' ".
    "ORDER BY `imgDate` DESC";

} else if($imgFamilyFalse && $imgClassTrue && $imgGenderFalse) {
    $query_pag_data = "SELECT `imgURL`,`imgTitle` FROM `images` WHERE imgClass='$imgClass' ".
    "ORDER BY `imgDate` DESC";

} else if($imgFamilyFalse && $imgClassFalse && $imgGenderTrue) {
    $query_pag_data = "SELECT `imgURL`,`imgTitle` FROM `images` WHERE imgGender='$imgGender' ".
    "ORDER BY `imgDate` DESC";

} else if($imgFamilyFalse && $imgClassTrue && $imgGenderTrue) {
    $query_pag_data = "SELECT `imgURL`,`imgTitle` FROM `images` WHERE imgClass='$imgClass' AND imgGender='$imgGender' ".
    "ORDER BY `imgDate` DESC";

} else if($imgFamilyTrue && $imgClassFalse && $imgGenderTrue) {
    $query_pag_data = "SELECT `imgURL`,`imgTitle` FROM `images` WHERE imgFamily='$imgFamily' AND imgGender='$imgGender' ".
    "ORDER BY `imgDate` DESC";

} else if($imgFamilyTrue && $imgClassTrue && $imgGenderFalse) {
    $query_pag_data = "SELECT `imgURL`,`imgTitle` FROM `images` WHERE imgFamily='$imgFamily' AND imgClass='$imgClass' ".
    "ORDER BY `imgDate` DESC";
}

我很确定问题出在 PHP 上,因为没有从 javascript 端调用错误,当我只有两个组合框时一切正常,但我会发布我的 jQuery Ajax 查询,以防出现问题就在那一端。

Ajax:

function loadData(imgFamily, imgClass, imgGender){
    $.ajax
    ({
        type: "GET",
        url: "filter_test.php",
        data: {imgFamily:imgFamily, imgClass:imgClass, imgGender:imgGender},
        success: function(msg) {
            $("#gallery_container").html(msg);
        },
        error: function(jqXHR, textStatus, errorThrown) {
        },
        complete: function() {
        }
    });
}

最佳答案

多么可怕的困惑。你绝对应该清理它:

$where_clauses = array();

$where_clauses[] = "1=1"; // default do-nothing clause

if ($_GET['imgFamily']) {
   $where_clauses[] = "imgFamily='$imgFamily'";
}
if ($_GET['imgClass']) {
   $where_clauses[] = "imgClass='$imgClass'";
}
if ($_GET['imgGender']) {
   $where_clauses[] = "imgFamily='$imgFamily'";
}

$clause = implode(' AND ', $where_clauses);
$sql = "SELECT imgURL, imgTitle FROM images WHERE $clause ORDER BY imgDate DESC";

关于php - Ajax 和 PHP : MySQL Query Not Fetching Any Rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7179652/

相关文章:

php - 限制数据库中的表,用户可以在 Laravel 中运行查询

MySQL group_concat 和计数

javascript - 根据 id 切换 MVC 表行的可见性

php - 使用 jQuery 和 AJAX 跨域 PHP 调用

javascript - 如何在javascript AJAX中从php获取两个id值

php - 使用 Steamworks API 拉取竞技游戏分数?

php - 我可以将可执行的 PHP 代码插入 Joomla 自定义 HTML 模块吗?

php - 如何让多条记录在mysql查询的网页上显示?

mysql - 用于 Node.js 的 MySQL 库中的错误

php - 无法弄清楚在 PHP 中使用 include() 无法访问 session 的问题是什么;