phpbar.de logo

Mailinglisten-Archive

[php] pdo, bindvalue und Limit

[php] pdo, bindvalue und Limit

Christian Wohlgemuth info at codesign-online.de
Fre Jan 18 18:35:04 CET 2008


Yannik Hampe wrote:
> 
> Christian Wohlgemuth wrote:
>> Hallo Liste,
>>
>> kleine Frage, vielleicht ist dieses Problem bekannt. ich möchte mit 
>> 'prepare' eine SQL-Query zusammensetzen, aber beim Limit, bekomme ich 
>> Probleme:
>>
>> [...]
>> $result = $objDb->prepare('SELECT * FROM `profile` WHERE `name` LIKE 
>> "%?%" OR  `kurzbeschreibung` LIKE "%?%" ORDER BY  `id` DESC LIMIT ?, ?');
> 
> Sowas hab ich noch nie versucht ;-). Ich würde entweder die 
> Prozentzeichen in php ergänzen oder
> $result = $objDb->prepare('SELECT * FROM `profile` WHERE `name` LIKE 
> CONCAT('%',?,'%') OR  `kurzbeschreibung` LIKE CONCAT('%',?,'%') ORDER BY 
>   `id` DESC LIMIT ?, ?');
auch wenn ich die ?-Platzhalter durch Andere ersetze, bekomme ich 
Probleme. Aber wie gesagt, nur bei Limit.

$result = $objDb->prepare('SELECT * FROM `profile` WHERE `name` LIKE
"%:search1%" OR  `kurzbeschreibung` LIKE "%:search2%" ORDER BY  `id` 
DESC LIMIT :start, :ende');
$result->bindvalue(':suche1',$suche, PDO::PARAM_STR);
$result->bindvalue(':suche2',$suche, PDO::PARAM_STR);
$result->bindvalue(':start',$start, PDO::PARAM_INT);
$result->bindvalue(':ende',$ende, PDO::PARAM_INT);
$result->execute();


> schreiben. Ich rate einfach mal, dass PDO deine ? in dem String nicht 
> als Parameterplatzhalter ernst nimmt. Wäre ja auch doof, denn sonst 
> könnte man da ja keine % als String in einem Query der "prepared" wird 
> einbringen.
> Aber nur um dich schonmal auf die Zukunft vorzubereiten:
> http://bugs.php.net/bug.php?id=40740
Diesen Link hatte ich auch gefunden, daher mal eine andere Frage:
Seht ihr pdo als einsatzreif? Sollte ich vielleicht noch warten, bist 
die Geschichte stabil läuft?

> 
>> Vielen Dank
>> Christian
> 
> Yannik
Christian



php::bar PHP Wiki   -   Listenarchive