I Have a MySql Database Structure and values samples as shown below:
sno firstname status
1 John Active
2 Kelly Inactive
3 Harri Passive
4 Kris Dormant
Now that I need to execute a Sql query from a PHP page, and the Status Values are from multiple checkbox which I have assigned as an array.
I have used Implode function for this array:
$status = $_POST['status'];
$mstat= implode (',', $status);
$query="SELECT * FROM USER WHERE status IN '$mstat'";
$result=mysql_query($query);
while ($members = mysql_fetch_assoc($result))
{
$fname= $members['firstname'];
echo $fname;
echo '</br>';
}
The problem is that I'm not getting any results. What could be the problem. Or If anyone could suggest/Advice for an alternative.
When I echo $mstat;
I get Active,Passive,Dormant
(That is based on my checkbox selection)
status
are strings. You need to wrap them with quotes
. And IN
needs ()
to wrap the string values. Try -
$mstat= "'" . implode ("','", $status) . "'";
$query="SELECT * FROM USER WHERE status IN ($mstat)";
Assuming $status
contains some or all of those values showed in database in array format.
Change this line to:
$query="SELECT * FROM USER WHERE status IN ('$mstat')";
The Argument must in ()
!!! EACH word must in ' ' like: $query="SELECT * FROM USER WHERE status IN ('Active','Inactive')"
You can change it like:
if ($mstat) $query .= ' ({$db->quote($status}) ';
Here is 100% working answer
$mstat= implode ("','", $status);
$query="SELECT * FROM USER WHERE status IN ('$mstat')";
IN works like this IN ('Active','Passive','Dormat') so we have to add '' in all values which is done in implode function.