Re: If condition in query

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Dear list -
> 
> Thank you for all your excellent help.
> 
> I wish to search a table.  In this case, I have five(5) columns: 
> site, Record, BMI, Weight and Height.
> I wish to be able to search on one or more of the columns.  If I use 
> a query like:
> 
> $ste = $_POST['site'];
> $req = $_POST['Record'];
> $wgt = $_POST['Weight'];
> $hgt = $_POST['Height'];
> $bmi = $_POST['BMI'];
> 
> $sql1 =  "select * from  intake2 where site = '$ste' &&  Weight = 
> '$wgt' &&  Record = '$req' &&  '$hgt' = Height &&  '$bmi' = BMI ";
> $result = mysqli_query($cxn, $sql1);
> 
> and do not use all the  variables, no data is returned.  I use to 
> extract the data from the query.
> 
> while($row = mysqli_fetch_array($result[0]))
> 
>      {
>          $site2 = $row[0];
>          $record2 = $row[1];
>          $bmi2 = $row[2];
>          $wgt2 = $row[3];
>          $hgt2 = $row[4];
>          printf("%s\t%d\t%3.1f\t%d\t%d<br />", $site2, $record2, 
> $bmi2, $wgt2, $hgt2);
>      }
> 
> 
> If I put an extra test in the query to exclude blank values;eg, 
> (if(isset ($bmi) &&  '$bmi' = BMI ), $result defaults to a boolean 
> and mysqli_fetch_array($result) fails.  I wish to be able to search 
> on one or more, but not necessarily all, of the parameters and be 
> able to output the results.
> 
> Advice and help please.
> 
> Thanks in advance.
> 
> Ethan

First you need to protect your input from injection and other attacks.
http://en.wikipedia.org/wiki/SQL_injection

for the problem you ask, I'd suggest building the query in php rather
than SQL A simple example would be:

$where ' ';
if (isset($ste)) {
    $where .= " site = '$ste'";
}
if (isset($wgt)) {
    $where .= ", Weight = > '$wgt'";
}

$sql .= " WHERE $where";


--
Niel Archer
niel.archer (at) blueyonder.co.uk


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux