A quick and simple from to search a MySQL database.
Example:
Mysqlsearch (' Items ', ' title tags ', isset ($get[' Q '])? $get[' q ']: ', Array (' columns ' = ' * ', ' method ' = ' OR ', ' extraSQL ' = = ' and active = ' true ' ORDER by ID DESC ');
- if (!function_exists (' Mysql_search ')) {
- function Mysql_search ($table, $columns, $query = ", $options = Array ()) {
- if (empty ($query)) {return Array ();}
- $sql _query = Array ();
- $options [' columns '] = isset ($options [' columns '])? $options [' Columns ']: ' * ';
- $options [' method '] = Isset ($options [' method '])? $options [' Method ']: ' OR ';
- $options [' extra_sql '] = isset ($options [' extra_sql '])? $options [' Extra_sql ']: ';
- $query = Ereg_replace (' [: <:]] (and|or|the) [[:];:] ', ', $query);
- $query = ereg_replace (' + ', ', Trim (stripslashes ($query)));
- $pattern = '/([: alpha:]:]+) ([[: Alpha:]]+) [[: alpha:]]?+[]?/i ';
- $regs = Array ();
- Preg_match_all ($pattern, $query, $regs);
- $query = $regs [0];
- while (list ($key, $value) = @each ($query)) {
- $column = $columns;
- $keywords = UrlDecode ($value);
- if (Strpos ($value, ': ')) {
- $column = substr ($value, 0, Strpos ($value, ': '));
- $keywords = Trim (substr ($keywords, Strpos ($keywords, ': ') + 1));
- $keywords = ereg_replace (' \ ', ' ', $keywords);
- } else {$keywords = ereg_replace (' + ', ' | ', $keywords);}
- $column _list = Explode (", $column);
- $sql = Array ();
- for ($i = 0; $i < count ($column _list), $i + +) {$sql [] = '. $column _list[$i]. ' REGEXP '. $keywords. '"'; }
- $query [$key] = Array (' orignal ' + = $value, ' sql ' =>implode ('. $options [' method ']. ", $sql));
- $sql _query = Array_merge ($sql _query, $sql);
- $sql _query = Implode (". $options [' method ']. ", $sql _query);
- }
- $results = Mysql_fetch_results (mysql_query (' SELECT '. $options [' columns ']. ' From '. $table. ' WHERE '. $sql _query. ' ' . $options [' Extra_sql ']);
- return $results;
- }
- }
Copy Code |