PDO - MySQL-variabelen gebruiken

Status
Niet open voor verdere reacties.

goud20

Nieuwe gebruiker
Lid geworden
31 mei 2018
Berichten
2
Beste lezers,

Ik loop tegen een knelpunt aan waar ik niet uitkom. Heb van alles geprobeerd maar het lukt mij niet in mij eentje.

Ik maak gebruik van onderstaande functie:

Code:
   function fetch_notitie($table, $idn, $start, $limit) {
        $query = "SET @i=0;";
//      $res = $this->runQuery($query); 
//      $res->execute();
        $query = "SELECT B.id, B.Stmt, B.Amt, B.VDt, B.BDt, B.Nm, B.Acct, B.Ustrd, B.Ind, B.Cd, B.CL, B.OP, B.CL, LS.omg, CB.cl_id, ruimte FROM $table B
        LEFT JOIN codes TC ON B.Cd = TC.code 
        LEFT JOIN letter LS ON LS.letter = TC.letter 
        LEFT JOIN cl_bg CB ON B.Stmt = CB.cl_bg
        LEFT JOIN (SELECT Stmt, 
        SUM (
        CASE
            WHEN Ind = 'D' THEN 0 - Amt
            ELSE Amt
        END) AS ruimte FROM notitie GROUP BY notitie.Stmt ) AS BB ON BB.Stmt = B.Stmt
        WHERE B.Amt > 0 AND B.Stmt = ?
        ORDER BY B.id ASC";
//      $query = "SET @i=0;";
        $res = $this->runQuery($query); 
        $res->execute([$idn]);
        $result = $res->fetchAll(PDO::FETCH_ASSOC);
        return $result;
    }

nou wil ik volgende stuk aan Query toevoegen:
Code:
 (@i: = @i + IF(B.Ind = 'C', +B.Amt, -B.Amt)) as saldo

Ik krijg een leeg saldo omdat ik niet weet hoe/waar ik dit stukje in moet verwerken
Code:
SET @i=0

In de phpMyAdmin zet ik
Code:
SET @i=0
voor de SELECT en ik krijg de gewenste resultaat maar het werkt niet in de functie zoals hierboven.

Hopelijk heb ik het duidelijk beschreven. Kan iemand mij hiermee helpen of mij in de juiste richting duwen.

Alvast bedankt voor het meedenken en de moeite.
 
Ik werk normaal niet met SET's maar een SET moet toch op een specifieke tabel worden afgeroepen? werkt het niet in PHPadmin omdat je daar in de juiste tabel al bent ingelogd?
 
Inmiddels heb ik het vandaag opgelost.

Oplossing is, twee keer je query aanroepen.

function fetch_notitie($table, $idn, $start, $limit) {
$query = "SET @i=0;";
$res = $this->runQuery($query);
$res->execute();
$query = "SELECT ......
.....
$res = $this->runQuery($query);
$res->execute();
 
bekijk ook eens

PHP:
... = new \PDO($conn, $usr, $pwd,\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
bekijk ook onderstaande en de snelheid ervan (verschil is klein maar ...)
PHP:
function fetch_notitie($table, $idn, $start, $limit) {
        $query = 'SET @i=0;';
$res = $this->runQuery($query);
$res->execute();
$query = 'SELECT B.id, B.Stmt, B.Amt, B.VDt, B.BDt, B.Nm, B.Acct, B.Ustrd, B.Ind, B.Cd, B.CL, B.OP, B.CL, LS.omg, CB.cl_id, ruimte FROM '.$table.' B '.
        'LEFT JOIN codes TC ON B.Cd = TC.code '.
        'LEFT JOIN letter LS ON LS.letter = TC.letter '. 
        'LEFT JOIN cl_bg CB ON B.Stmt = CB.cl_bg '.
        'LEFT JOIN (SELECT Stmt, '.
        'SUM( '.
        'IF(Ind = "D",0 - Amt ,Amt)'.
        //'CASE '.
        // 'WHEN Ind = "D" THEN 0 - Amt '.
        // 'ELSE Amt '.
        // 'END)'.
        ' AS ruimte FROM notitie GROUP BY notitie.Stmt ) AS BB ON BB.Stmt = B.Stmt '.
        'WHERE B.Amt > 0 AND B.Stmt=:idn '.
        'ORDER BY B.id ASC';
        $res = $this->runQuery($query);
        $res->execute([':idn'=>$idn]);
        $result = $res->fetchAll(PDO::FETCH_ASSOC);
        return $result;
    }
ik kan mij vergissen maar moet dat niet zijn
FROM '.$table.' as B '
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan