में कस्टम क्वेरी को कनवर्ट करना PHP का उपयोग कर SQL में निम्न इनपुट को परिवर्तित करने का सबसे अच्छा तरीका क्या होगा?एसक्यूएल
+a - includes a
+(c\d) - includes c or d but not both
+(c/d/e) - includes any of these
-f - does not include f
मैं preg_replace का उपयोग कर या लूप करने के लिए विस्फोट और बयान करता है, तो कर विभिन्न stabs लिया है लेकिन लगातार काम करने के लिए कुछ भी नहीं मिला है।
मैं मूल रूप से
+a +(c/d/e)
की तरह कुछ करने के लिए बारी में
SELECT * FROM the_table
WHERE description LIKE "%a%"
AND (description LIKE "%c%" OR description like "%d%" OR description LIKE "%$e%")
धन्यवाद की जरूरत है!
अद्यतन:
यहां मेरा प्रयास है। मुझे यकीन है कि एक आसान तरीका है ...
public function custom_query($query){
$fields = " feed_items.description ";
$return_query = "";
$query = str_replace("'", '', $query);
$pluses = explode('+',$query);
foreach($pluses as $plus){
$plus = trim($plus);
if (substr($plus,0,1) == '('){
$return_query .= 'AND (';
$plus = str_replace(array('(',')'), '', $plus);
$ors = explode('/', $plus);
foreach($ors as $or){
if ($or){
$return_query .= $fields." LIKE '%".$or."%' OR";
}
}
$return_query = rtrim($return_query, ' OR');
$return_query .= ')';
} else {
if ($plus){
$return_query .= ' AND ' . $fields.' LIKE '.'"%'.$plus.'%"';
}
}
}
$negatives = explode('-',$query);
foreach($negatives as $negative){
$negative = trim($negative);
if (substr($negative,0,1) == '('){
$return_query .= 'AND (';
$negative = str_replace(array('(',')'), '', $negative);
$ors = explode('\\', $negative);
foreach($ors as $or){
if ($or){
$return_query .= $fields." NOT LIKE '%".$or."%' OR";
}
}
$return_query = rtrim($return_query, ' OR');
$return_query .= ')';
} else {
if ($negative){
$return_query .= ' AND ' . $fields.' NOT LIKE '.'"%'.$negative.'%"';
}
}
}
$return_query = ' AND '.ltrim($return_query, ' AND ');
return $return_query;
}