I am creating SQL query based on user input:
// user input
$amount = '20';
// query in zend
$select->where('amount = ?', $amount );
Now according to new requirements user can input in following formats as well:
$amount = '20';
$amount = '<20';
$amount = '<=20';
$amount = '>20';
$amount = '>=20';
$amount = '=20';
I think you understand the new feature. So how can I parse $amount
variable to fit it in above query? I have to separate number
and sign
from $amount
variable to use them on their proper position. And if there is wrong sign(i.e $amount='$%20'; )
then it should consider it as equal sign(i.e $amount='=20'; )
What approach should I follow to solve this?
Thanks
$parts = array();
if (preg_match('/^(\D+)?(\d+)$/', $amount, $parts)) {
$operator = (!in_array($parts[1], array('=', '<', '<=', '>=', '>'))) ? '=' : $parts[1];
$value = $parts[2];
$select->where('amount ' . $operator . ' ?', $value );
}