[ciapug] Building a Where Clause from an Array
Chris Hettinger
ciapug@cialug.org
Fri, 14 May 2004 17:38:42 -0500
>> Oh, you'd probably figure this out, but it's not correct to say "where x
>> = y and where a = b" ... you only need the keyword "where" once.
See... It wasn't clicking with me today... I knew that, but was still
putting in the "where" ... oops. lol
-ch
David Champion wrote:
> Chris Hettinger wrote:
>
>> Okay ... I'm sure I can do this but it's just not clicking today.
>> Please HELP! :)
>>
>> I have these 4 variables that I want to use in a where clause in my
>> SQL query. The thing is, it's a situation where it a 1 or more of the
>> fields will have a value... so here is my psydocode:
>>
>> // populated from a form
>> $lname
>> $fname
>> $patientid
>> $caseid
>>
>> /*
>> * for this example assume
>> * $lname = ''
>> * $fname = 'chris'
>> * $patientid = '150'
>> * $caseid = ''
>> *
>> */
>>
>> // put these into a array
>> $Params = array{
>> "lname" => $lname,
>> "fname" => $fname,
>> "patientid" => $patientid,
>> "caseid" => $caseid
>> );
>>
>> // I count the number of values in the array
>> // so I know I have 2 values.
>>
>> $sql = "SELECT * FROM myTable";
>>
>> // Here I want to loop through the 'Params' array where
>> // a 'key' has a 'value' and then build a where clause
>>
>> // if there is only 1 value
>> $sql .= " WHERE key = 'value'";
>>
>> // if there is more than 1 value, use AND in the clause
>> $sql .= " AND WHERE key = 'value'";
>>
>> $sql .= " ORDER BY lname ASC";
>>
>> ... Thanks
>> -ch
>
>
> It's "pseudocode", not "psydocode", although you could describe my code
> as "psychocode". :/
>
> Depending on how many fields you have, it may be easier to skip the
> array, and just say:
>
> (warning - I haven't done PHP for so long I barely remember it)
>
> $sql = "select * from stuff where ";
> $where = "";
> if ($lname) {
> $where .= "lname = '" . $lname ."' ";
> }
> if ($fname) {
> // see if we need the "and"...
> if ($where) {
> $where .= "and ";
> }
> $where .= "fname = '" . $fname . "' ";
> }
> ...
>
> $sql = $sql . $where;
>
> When I have a ton of fields, I've created a function so I can pass the
> field name and value, and it will add it to the "where" clause.
>
> Oh, you'd probably figure this out, but it's not correct to say "where x
> = y and where a = b" ... you only need the keyword "where" once.
>
> -dc
>
> _______________________________________________
> ciapug mailing list
> ciapug@cialug.org
> http://cialug.org/mailman/listinfo/ciapug
>