Thanks for all your suggestions. I've tried them all and am still having no luck. It may be the combination of how I'm using the conversion statement and the query statement. I've been checking through books and on the web and am not finding much about how to use REGEXP in a query, where the value of the expression is taken from user input and stored in a variable. (I'm thinking it should be exactly as Ignatius says....) Here's what I have now;
// user enters a partial expression in the $con form field, and php converts the
// input to a regular expression before searching the database for matches
//convert $con to regular expression // $con = "%$con%"; $query = "SELECT {$field} FROM {$table} WHERE {$variable} REGEXP '{$con}' ";
The results page from this search shows no matches.
Thanks for your help and patience.
Robbie
Ignatius Reilly wrote:
For readability (and writability...) purpose, I prefer to write such a query in the form:
$query = "SELECT {$field}FROM {$table}WHERE {$variable}REGEXP '{$con}' " ;
Ignatius ____________________________________________ ----- Original Message ----- From: <Jeffrey_N_Dyke@Keane.com> To: "Robbie Staufer" <rstaufer@scd.ucar.edu> Cc: <php-db@lists.php.net>; "Rob Bryant" <rob@3jar.com> Sent: Monday, April 07, 2003 7:25 PM Subject: Re: variable within regular expression
variable within regular expressionif you want to truley use regular expressions, change the query to $query = "SELECT " . $field . " FROM " . $table . " WHERE " . $variable . " REGEXP '".$con."'";
and drop the %'s, as you won't need them with a true REGEXP search. as far as the signle quotes those should be fine. but in this example i concatenated with -> .
this could be nothing like what your looking for...and if so, sorry for th waste of bandwidth.
jd
Robbie Staufer
<rstaufer@scd. To: Rob Bryant <rob@3jar.com>
ucar.edu> cc: php-db@lists.php.net
Subject: Re:
04/07/2003 01:19 PM
Thanks for the help. Here's what I tried: // convert $con to regular expression $con = "%$con%"; $query = "SELECT " . $field . " FROM " . $table . " WHERE " . $variable . " LIKE '%{$con}%'";
I'm sure this is close to correct, but it's not working yet. The application itself works for numeric values for $con, and also for exact string values for $con. But if a partial string is entered for $con, the regex conversion part fails.
Thanks, Robbie Staufer
Rob Bryant wrote:
variable.I think maybe the single quotes don't interpolate the value of the-----Original Message----- From: Robbie Staufer [mailto:rstaufer@scd.ucar.edu] Sent: Friday, April 04, 2003 3:59 PM To: php-db@lists.php.net Subject: variable within regular expression
I have a php query form in which the user input must be converted to a regular expression before querying the db. Something like this pseudo code: $var = $_GET['usr-input']; $var = '%$var%'; SELECT * FROM table WHERE field LIKE $var.
I can't find the right syntax to make this work. Does anyone know?
In other words, let's say $var is 'fubar':
$var = '%$var%'; // -> is literally %$var%
vs.
$var = "%$var%"; // -> is %fubar%
Anyway, here's some of my code that is similar to (what I think) you're trying to do:
if (isset($_GET['nstring'])) { $nstring = addslashes($_GET['nstring']); $squery = "SELECT * FROM lead WHERE name LIKE '%{$nstring}%' ORDER BY source, ref_by, date DESC"; $sresult = mysql_query($squery); } // etc...
-- -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* Robbie Staufer NCAR/SCD 1850 Table Mesa Dr. Rm. 42 Boulder, CO. 80305 (303) 497-1836
-- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
-- -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* Robbie Staufer NCAR/SCD 1850 Table Mesa Dr. Rm. 42 Boulder, CO. 80305 (303) 497-1836