|
Posted by Rik Wasmus on 09/06/07 12:19
On Thu, 06 Sep 2007 14:03:22 +0200, 4sgcv5hy6d0r =
<fj4sgcv5hy6d0r3@temporaryinbox.com> wrote:
> Hi group!
> Why str_replace does not work in this case?
> Thanks in advance!
>
> if ($cat0 !=3D ''){ $query_cat0 =3D "cat0 LIKE '$cat0%'"; }
> if ($cat1 !=3D ''){ $query_cat1 =3D "AND cat1 LIKE '$cat1%'"; }
> if ($cat2 !=3D ''){ $query_cat2 =3D "AND cat2 LIKE '$cat2%'"; }
>
> $mysql_query =3D "SELECT * FROM mytable WHERE ".$query_cat0." ".
> $query_cat1." ".$query_cat2;
> $what =3D 'WHERE AND';
> $with =3D 'WHERE';
>
> $mysql_query =3D str_replace($what, $with, $mysql_query);
>
> echo $mysql_query;
Because the string is 'WHERE AND', not 'WHERE AND', notice the double =
space. You could use a regex matching whitespace, clearly overkill. I'd =
do =
it like this:
$where_clauses =3D array();
if ($cat0 !=3D ''){ $where_clauses[] =3D "cat0 LIKE '$cat0%'"; }
if ($cat1 !=3D ''){ $where_clauses[] =3D "cat1 LIKE '$cat1%'"; }
if ($cat2 !=3D ''){ $where_clauses[] =3D "cat2 LIKE '$cat2%'"; }
$mysql_query =3D "SELECT * FROM mytable";
if(!empty($where_clauses)) $mysql_query .=3D ' WHERE '.implode(' AND =
',$where_clauses);
echo $mysql_query;
-- =
Rik Wasmus
[Back to original message]
|