tags:

views:

100

answers:

1

Hi,

this SQL clause is working OK:

SELECT * FROM `sf_guard_user` WHERE nombre_apellidos LIKE REPLACE('Mar Sanz',' ','%')

Now I'm trying to write this query for Doctrine. I have tried this:

$query->andWhere(sprintf('%s.%s LIKE REPLACE (?," ","%")',
                         $query->getRootAlias(), $fieldName),
                 'Mar Sanz'));

but I get this error:

Warning: sprintf() [function.sprintf]: Too few arguments

Any idea?

Regards

Javi

+3  A: 

A '%' must be doubled ('%%') to mean a literal % inside of a pattern string you sent to sprintf or printf:

$query->andWhere(sprintf('%s.%s LIKE REPLACE (?," ","%%")',
                         $query->getRootAlias(), $fieldName),
                 'Mar Sanz'));

Suggestion: Why not run the string-replacement function inside the code before you send it to the database server?

$query->andWhere(
    sprintf(
        '%s.%s LIKE ?',
        $query->getRootAlias(),
        $fieldName
    ),
    preg_replace('/ /', '%', 'Mar Sanz')
);
amphetamachine
Thanks! Does your suggestion have any advantage?