Versio

PDO Where .. like?

Overzicht Reageren

Roeltje M

Roeltje M

24/07/2010 15:10:09
Quote Anchor link
`Hoi,

Ik heb de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    public function findOutbreakByName($naam)
    {

        $query = "SELECT e.epi_id, e.ecat_id, ec.naam AS cat_naam, e.naam, e.oorsprong, e.wereld_besmettingen, e.wereld_doden, e.nl_besmettingen, e.nl_doden, e.incubatie, e.besmetting, e.symptonen, e.remedie, e.informatie, e.periode_van, e.periode_tot FROM epidemie e INNER JOIN epidemie_categorie ec ON (e.ecat_id = ec.ecat_id) WHERE e.naam LIKE '%:naam%' ORDER BY e.naam  ASC";
        $stmt = $this->db->prepare($query);            
        $stmt->bindParam(':naam', $naam);                
        $stmt->execute();        
        
        if($stmt->rowCount() < 1)
            throw new InvalidOutbreakException ('Geen resultaten gevonden');                
        
        return $this->fetchAll($stmt);        
    }
    
?>


Deze query geeft nu helaas geen resultaten terug. Wat doe i kfout?
 
PHP hulp

PHP hulp

25/05/2012 09:57:03
Gesponsorde koppelingen:
 
Noppes Homeland

Noppes Homeland

24/07/2010 15:19:59
Quote Anchor link
foutafhandeling ontbreekt!
 
Justin S

Justin S

24/07/2010 17:21:10
Quote Anchor link
stop 'm in een try, met de volgende catch:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

catch(PDOException $e) {
echo $e->getMessage();
}


?>
 
Roeltje M

Roeltje M

24/07/2010 17:52:01
Quote Anchor link
Dat heb ik..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php                 try
                {
                    $outbreak = new OutbreakController($db);
                    $results = $outbreak->findOutbreakByName($_POST['naam']);
                    echo '<table cellspacing="0" width="100%" id="epidemie">';
                        echo '<tr>';
                            echo '<td class="cat_table_title">Naam</td>';
                            echo '<td class="cat_table_title">Oorsprong</td>';                        
                            echo '<td class="cat_table_title">Periode</td>';                        
                        echo '</tr>';                        
                        foreach($results as $row)
                        {
        
                            echo '<tr>';
                                echo '<td><a href="/id/'.$row['epi_id'].'/">'.$row['naam'].'</a></td>';
                                echo '<td>'.$row['oorsprong'].'</td>';                        
                                echo '<td>'.(!empty($row['periode_van']) ? $row['periode_van'] : 'Onbekend').' - '.(!empty($row['periode_tot']) ? $row['periode_tot'] : 'Onbekend').'</td>';                        
                            echo '</tr>';                        
                        }

                    echo '</table>';                            
                }

                catch(Exception $e)
                {

                    echo $e->getMessage();    
                }
?>


Dan krijg ik dus de exception "Geen resultaten"
Gewijzigd op 24/07/2010 17:52:26 door Roeltje M
 
Justin S

Justin S

24/07/2010 20:39:59
Quote Anchor link
Ik mis de Query in de try, maar misschien heb je die erbuiten geplaatst of is deze te vinden in de OutbreakController klasse.
Kijk eens of je de Query kan versimpelen, dus gewoon: SELECT * FROM database en kijk eens of je dan wel resultaat krijgt. Vervolgens ga je de * vervangen door de door jou op te vragen data zonder AS, die test je weer, dan stop je de WHERE of LIKE erin, en pas daarna de AS, dan weet je namelijk waar het fout gaat!

Succes!
 
Jurgen Meijer

Jurgen Meijer

29/07/2010 16:53:38
Quote Anchor link
probeer eens ipv bindParam;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$stmt
->bindValue(':naam', '%'.$naam.'%', PDO::PARAM_STR);
?>


Uiteraard in je query even aanpassen:

LIKE '%:naam%'...

naar

LIKE :naam
 
Aad B

Aad B

29/07/2010 20:13:58
Quote Anchor link
Ik ben een newbee in php/mysql weet wel wat van ansi-sql maar die dubbele punt bij :naam is dat goed ?
 
Jurgen Meijer

Jurgen Meijer

02/08/2010 11:07:58
Quote Anchor link
Aad B op 29/07/2010 20:13:58:
Ik ben een newbee in php/mysql weet wel wat van ansi-sql maar die dubbele punt bij :naam is dat goed ?


:naam is een placeholder die door de SQL statement wordt vertaald in een waarde op het moment dat execute() wordt aangeroepen.
 
Roeltje M

Roeltje M

02/08/2010 12:46:34
Quote Anchor link
Oplossing van Jurgen Werkt!! Bedankt ;)
 



Overzicht Reageren

Get Adobe Flash player