1

MySQLi handler - this one is displaying everything as intended.

$wynik = @$polaczenie -> query("SELECT zlec_status.nazwa                       AS Status, 
           piorytet.nazwa                          AS Priorytet, 
           Concat(koord.imie, ' ', koord.nazwisko) AS `Koordynator`, 
           Concat(zlec_adresy.miasto, ' - ', zlec_adresy.ulica, ' ', 
           zlec_adresy.oddzial) 
                                                   AS `adres`, 
           zlec_z_dnia,zlec_id,
           zlec_nr, 
           zlec_do, 
           zlec_ogran, 
           awizacje, 
           awizacja_na_dzien, 
           termin_zamkniecia, 
           tresc, 
           uwagi 
    FROM   zlec 
           INNER JOIN koord 
                   ON zlec.koord = koord.id 
           INNER JOIN zlec_adresy 
                   ON zlec.zlec_addres = zlec_adresy.id 
           INNER JOIN piorytet 
                   ON zlec.priorytet = piorytet.id 
           INNER JOIN zlec_status 
                   ON zlec.status_zlecenia = zlec_status.id 
    WHERE `zlec_adresy`.`miasto` LIKE '%".array_values($activeFilters)[0]."%'
                OR
                  `zlec_adresy`.`ulica` LIKE '%".array_values($activeFilters)[0]."%'
                OR 
                  `zlec_adresy`.`oddzial` LIKE '%".array_values($activeFilters)[0]."%'
    LIMIT 0,10");
        if ($wynik === false){
            echo '<p>Zapytanie nie zostało wykonane poprawnie!</p>';
            $polaczenie -> close();
        }
        else {
        $foutput = null;
        while(($row = $wynik -> fetch_assoc()) !== null){
        $foutput[] = array(
                'zlec_id' => $row['zlec_id'],
                //'koord' => $zlecenie->get_coord($row['koord']),
                'priorytet' =>$row['Priorytet'],
                'zlec_addres' => $row['adres'],
                'zlec_z_dnia' => $row['zlec_z_dnia'],
                'zlec_nr' => $row['zlec_nr'],
                'zlec_do' => $row['zlec_do'],
                'zlec_ogran' => $row['zlec_ogran'],
                'awizacje' => $zlecenie->get_person_awizo($row['awizacje']),
                'awizacja_na_dzien' => $row['awizacja_na_dzien'],
                'status_zlecenia' => $row['Status'],
                'termin_zamkniecia' => $row['termin_zamkniecia'],
                'tresc' => $row['tresc'],
                'uwagi' => $row['uwagi']
          );
    }
            $wynik -> close(); // zwolnienie pamięci
            $polaczenie -> close();
        }

A var_dump($foutput) will show all the data it contains.

The PDO handler

    $fquery = $db->query("SELECT zlec_status.nazwa                       AS Status, 
       piorytet.nazwa                          AS Priorytet, 
       Concat(koord.imie, ' ', koord.nazwisko) AS `Koordynator`, 
       Concat(zlec_adresy.miasto, ' - ', zlec_adresy.ulica, ' ', 
       zlec_adresy.oddzial) 
                                               AS `adres`, 
       zlec_z_dnia,zlec_id,
       zlec_nr, 
       zlec_do, 
       zlec_ogran, 
       awizacje, 
       awizacja_na_dzien, 
       termin_zamkniecia, 
       tresc, 
       uwagi 
FROM   zlec 
       INNER JOIN koord 
               ON zlec.koord = koord.id 
       INNER JOIN zlec_adresy 
               ON zlec.zlec_addres = zlec_adresy.id 
       INNER JOIN piorytet 
               ON zlec.priorytet = piorytet.id 
       INNER JOIN zlec_status 
               ON zlec.status_zlecenia = zlec_status.id 
WHERE :where_st LIMIT :start, :pagesize", array(
            "start" => $start,
            "pagesize" => $pagesize,
            "where_st" => $where
        ));

This are the generators for the bindings.

$pagenum = $_GET['pagenum'];
$pagesize = $_GET['pagesize'];
$start = $pagenum * $pagesize;

switch (array_keys($activeFilters)[0]) {
    case "zlec_addres":
        $where .= "`zlec_adresy`.`miasto` LIKE '%".array_values($activeFilters)[0]."%'
            OR
              `zlec_adresy`.`ulica` LIKE '%".array_values($activeFilters)[0]."%'
            OR 
              `zlec_adresy`.`oddzial` LIKE '%".array_values($activeFilters)[0]."%'";
        break;
}

And lastly a dump for the $fquery

SELECT zlec_status.nazwa                       AS Status, 
       piorytet.nazwa                          AS Priorytet, 
       Concat(koord.imie, ' ', koord.nazwisko) AS `Koordynator`, 
       Concat(zlec_adresy.miasto, ' - ', zlec_adresy.ulica, ' ', 
       zlec_adresy.oddzial) 
                                               AS `adres`, 
       zlec_z_dnia,zlec_id, 
       zlec_nr, 
       zlec_do, 
       zlec_ogran, 
       awizacje, 
       awizacja_na_dzien, 
       termin_zamkniecia, 
       tresc, 
       uwagi 
FROM   zlec 
       INNER JOIN koord 
               ON zlec.koord = koord.id 
       INNER JOIN zlec_adresy 
               ON zlec.zlec_addres = zlec_adresy.id 
       INNER JOIN piorytet 
               ON zlec.priorytet = piorytet.id 
       INNER JOIN zlec_status 
               ON zlec.status_zlecenia = zlec_status.id 
WHERE `zlec_adresy`.`miasto` LIKE '%Sz%'
            OR
              `zlec_adresy`.`ulica` LIKE '%Sz%'
            OR 
              `zlec_adresy`.`oddzial` LIKE '%Sz%' LIMIT 0, 10

This is quite wired because both on the MySQLi handler and direct sql query in phpmyadmin returns the desired data - but it seems like the PDO handler doesn't display anything, only thing that comes to my mind is that I use '%".array_values($activeFilters)[0]."%' as a string injection for the query but it should be passed as a parameter - I am not sure about that I might be wrong I really would like to stick to PDO instate of creating next db connection. Could you try explain me why is it not displaying? Var_dumping the PDO query returns array(0) - while echoing the code and pasting to phpmyadmin returns 9 affected rows. Besides, the same query but without the WHERE part - runs normally and shows affected rows which is even more wired

Kavvson Empcraft
  • 445
  • 7
  • 32
  • Could you please show your connect, prepare, bind and execute statements in context - or has that all been independently verified? – DaveStSomeWhere Jul 13 '15 at 11:48
  • Well all works fine I added "Besides, the same query but without the WHERE part - runs normally and shows affected rows which is even more wired" so it has something to do with the Where part – Kavvson Empcraft Jul 13 '15 at 11:49

0 Answers0