Cách tốt nhất để chuyển đổi đầu vào sau vào SQL bằng cách sử dụng PHP là gì?Chuyển các truy vấn tùy chỉnh thành 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
Tôi đã sử dụng preg_replace khác nhau hoặc phát nổ để lặp lại và thực hiện các câu lệnh nhưng không có bất kỳ điều gì để hoạt động ổn định.
tôi về cơ bản cần phải bật cái gì đó như
+a +(c/d/e)
Into
SELECT * FROM the_table
WHERE description LIKE "%a%"
AND (description LIKE "%c%" OR description like "%d%" OR description LIKE "%$e%")
Cảm ơn!
CẬP NHẬT:
Đây là nỗ lực của tôi. Tôi chắc chắn có một cách dễ dàng hơn ...
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;
}