2010-08-23 15 views
4

Comme je ne connais pas bien PDO et que je rencontre un problème en cas de déviation par rapport à une simple requête de sélection, je me suis dit que je ferais mieux de demander par ici.Requête PDO 'LIKE'

Le code:

$sDbase = str_replace('`', '', $modx->db->config['dbase']); 
    $oPdo = new PDO("mysql:host=localhost;dbname=" . $sDbase . ";", $modx->db->config['user'], $modx->db->config['pass']); 
    $oPdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    if(isset($_POST["search"])) 
    { 
    $sSearch = (!empty($_POST["search"])) ? mysql_real_escape_string($_POST["search"]) : "" ; 
    } 

    $sSearch = 'beer' ; 

    $sQry = <<< QRY 
    SELECT 
     contentid AS standid 
     ,value AS found 
     ,pagetitle 
     ,published 
    FROM 
     modx_site_tmplvar_contentvalues 
    RIGHT JOIN 
     modx_site_content 
     ON 
     modx_site_content.id = modx_site_tmplvar_contentvalues.contentid 
    WHERE 
     (tmplvarid = 41 OR tmplvarid = 40) 
    AND 
     (value LIKE '%:search%' 
     OR 
     pagetitle LIKE '%:search%') 
    AND 
     published = '1' 
    ORDER BY 
     pagetitle 
    ASC 
QRY; 

    $oRes = $oPdo->prepare($sQry); 
    $oRes -> bindParam(":search", $sSearch); 
    $oRes -> execute() ; 

    $aRow = $oRes->fetchAll(); 
    $oRes -> closeCursor(); 


    var_dump($aRow); 

La $sSearch variable est ce que je veux lier à :search dans la requête. Pour cet exemple, j'ai défini une valeur, mais évidemment je veux remplacer cela par une variable POST, c'est pourquoi je veux utiliser PDO en premier lieu.

Cependant, la requête a été testée avec $sSearch remplacé par une valeur de recherche et fonctionne, mais maintenant j'ai utilisé PDO pour effectuer la même requête, et j'obtiens un résultat vide. Eh bien, un tableau vide vraiment.

Alors qu'est-ce qui me manque ici?

+0

Désolé, Mon mauvais. J'ai déjà trouvé la solution: $ sSearch = '% bier%'; et la valeur comme: – Amelia

+1

Pouvez-vous poster votre commentaire comme une réponse afin que nous puissions l'obtenir de la liste "sans réponse"? Merci. –

Répondre

7

commentaire Per Amelia, voici la réponse:

$sSearch = '%bier%' ; 

et

value LIKE :search 

a fait l'affaire.