Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL PDO不在查询中_Php_Mysql_Pdo - Fatal编程技术网

Php MySQL PDO不在查询中

Php MySQL PDO不在查询中,php,mysql,pdo,Php,Mysql,Pdo,我对一个查询有问题(见下文) 我想从表abb和表amne中获取表abb\u elev\u mal中不存在的所有数据 当在表abb elev\u mal中找不到ident和elev\u id时,我想从表abb中选择所有内容 问题:提供了错误的数据 有什么建议吗 public function get_abb($status, $arskurs, $elev_id, $antal_visningar) { $query = $this->db->prepare("

我对一个查询有问题(见下文)

我想从表
abb
和表
amne
中获取表
abb\u elev\u mal
中不存在的所有数据

当在表
abb elev\u mal
中找不到identelev\u id时,我想从表
abb
中选择所有内容

问题:提供了错误的数据

有什么建议吗

public function get_abb($status, $arskurs, $elev_id, $antal_visningar) {  


     $query = $this->db->prepare("

        SELECT ab.*, aa.*
        FROM `abb` as ab
        INNER JOIN `amne` as aa
            ON ab.amne_id = aa.amne_id      
        WHERE (ab.arskurs = ? AND ab.aktiv = ?)
            AND
               NOT EXISTS (
                  SELECT * 
                  FROM `abb_elev_mal` as am 
                  WHERE am.ident = ab.ident AND am.elev_id = ?
               )
        ORDER BY ab.datum DESC
        LIMIT ?");

    $query->bindValue(1, $arskurs,PDO::PARAM_INT);      
    $query->bindValue(2, $status, PDO::PARAM_INT);  
    $query->bindValue(3, $elev_id, PDO::PARAM_INT); 
    $query->bindValue(4, $antal_visningar, PDO::PARAM_INT);

    try{

        $query->execute();

        return $query->fetchAll();

    } catch(PDOException $e){  

        die($e->getMessage());
    }

} // End get_abb
更新:

        SELECT *
        FROM `abb` as ab
        INNER JOIN `amne` as aa
        ON ab.amne_id = aa.amne_id      
        WHERE (ab.arskurs = ? AND ab.aktiv = ?)
        AND ab.ident NOT IN
            (
            SELECT ab.ident
            FROM `abb_elev_mal` 
            WHERE elev_id = ?)
        ORDER BY ab.datum DESC
        LIMIT ?");
但输出相同


第二次更新:

        SELECT *
        FROM `abb` as ab
        INNER JOIN `amne` as aa
        ON ab.amne_id = aa.amne_id      
        WHERE (ab.arskurs = ? AND ab.aktiv = ?)
        AND ab.ident NOT IN
            (
            SELECT ab.ident
            FROM `abb_elev_mal` 
            WHERE elev_id = ?)
        ORDER BY ab.datum DESC
        LIMIT ?");
选择1

SELECT  * 
FROM  `abb` 
WHERE arskurs =8
AND aktiv =1
输出:44结果


选择2

SELECT  * 
FROM  `abb_elev_mal` 
WHERE elev_id =934
输出:16个结果


输出:与选择2相同的16个结果

如何找到“缺失”的28个结果(在SELECT 1中输出的44个结果中)

解决了它。见下文

    $query = $this->db->prepare("

        SELECT *
        FROM `abb` ab
        INNER JOIN `amne` am
        ON ab.amne_id = am.amne_id  
        WHERE ab.ident 
            NOT IN
                (SELECT ident FROM `abb_elev_mal` WHERE elev_id = :elev_id)
        AND arskurs = :arskurs AND aktiv = :status 
        ORDER BY datum DESC
        LIMIT :visningar

    ");

    $query->bindValue(':elev_id', $elev_id, PDO::PARAM_INT);    
    $query->bindValue(':arskurs', $arskurs,PDO::PARAM_INT); 
    $query->bindValue(':status', $status, PDO::PARAM_INT);      
    $query->bindValue(':visningar', $antal_visningar, PDO::PARAM_INT);  
解决了。见下文

    $query = $this->db->prepare("

        SELECT *
        FROM `abb` ab
        INNER JOIN `amne` am
        ON ab.amne_id = am.amne_id  
        WHERE ab.ident 
            NOT IN
                (SELECT ident FROM `abb_elev_mal` WHERE elev_id = :elev_id)
        AND arskurs = :arskurs AND aktiv = :status 
        ORDER BY datum DESC
        LIMIT :visningar

    ");

    $query->bindValue(':elev_id', $elev_id, PDO::PARAM_INT);    
    $query->bindValue(':arskurs', $arskurs,PDO::PARAM_INT); 
    $query->bindValue(':status', $status, PDO::PARAM_INT);      
    $query->bindValue(':visningar', $antal_visningar, PDO::PARAM_INT);  

为什么不在(ids)中使用
NOT
我已经尝试过了,但是没有成功。比如->
ab.ident NOT IN()
。您是否尝试过直接在MySQL中运行查询?我已经用MySQL中的一些查询结果更新了我的问题。关于如何找到“缺失”的28个结果,有什么建议吗?谢谢您的时间。为什么不在(ids)中使用
NOT
我已经尝试过了,但是没有成功。比如->
ab.ident NOT IN()
。您是否尝试过直接在MySQL中运行查询?我已经用MySQL中的一些查询结果更新了我的问题。关于如何找到“缺失”的28个结果,有什么建议吗?谢谢你抽出时间。