Doktrini: nasıl kullanarak bir sorgu oluşturmak için "GİBİ DEĞİŞTİR"?

1 Cevap php

Bu SQL fıkra Tamam çalışıyor:

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

Şimdi Öğretiler bu sorgu yazmaya çalışıyorum. Ben denedim:

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

ama ben bu hatayı alıyorum:

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

Herhangi bir fikir?

Selamlar

Javi

1 Cevap

A '%' Eğer sprintf veya printf gönderilen bir desen dize içinde bir edebi% demek ('%%') iki katına olmalıdır:

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

Eğer veritabanı sunucuya göndermeden önce Suggestion: Neden kodu içinde dize değiştirme işlevi çalışmaz?

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