Thread: Wildcard queries via PHP4
Hi,
I am trying to find the syntax to pass a wildcard query through to postgres.
Basically I just want to use the user input as a substring of the actual query to postgres.
It can even be simpler, I realy only need the wildcard at end of the input string
i.e. user inputs Smith in form, I want to pick up Smith & Smithsonian.
Right now I have:
if ( strlen($NAME) >0):
$NAME = addslashes($NAME);
$NAME = strtolower($NAME); /
$NAME = ucfirst($NAME); //translation final to Upper 1st letter rest lower as per db format.
$conn = pg_Connect("dbname=damn_db port=5432");
if(!$conn) { echo "Error in connecting to DB\n"; exit; }
$result = pg_Exec($conn, "SELECT * FROM table2 WHERE surname = '$NAME' ");
For whatever reason the *~ matching does not work in PHP4 (ie surname *~ )
(or more precisely I can't get it to work)
Any suggestions?
Many thanks.
I am trying to find the syntax to pass a wildcard query through to postgres.
Basically I just want to use the user input as a substring of the actual query to postgres.
It can even be simpler, I realy only need the wildcard at end of the input string
i.e. user inputs Smith in form, I want to pick up Smith & Smithsonian.
Right now I have:
if ( strlen($NAME) >0):
$NAME = addslashes($NAME);
$NAME = strtolower($NAME); /
$NAME = ucfirst($NAME); //translation final to Upper 1st letter rest lower as per db format.
$conn = pg_Connect("dbname=damn_db port=5432");
if(!$conn) { echo "Error in connecting to DB\n"; exit; }
$result = pg_Exec($conn, "SELECT * FROM table2 WHERE surname = '$NAME' ");
For whatever reason the *~ matching does not work in PHP4 (ie surname *~ )
(or more precisely I can't get it to work)
Any suggestions?
Many thanks.
_______________________________
Rick Frank
Dufferin Research
mailto:rickf@dufferinresearch.com
________________________________
Hey, try LIKE.. so.. $query = "SELECT * FROM table2 WHERE surname LIKE '%$name%'"; the % before matches anything before $name (so goldsmith would match), % after matches anything after $name (so smithsonian matches).. Check out http://www.postgresql.org/docs/aw_pgsql_book/node51.html for more info.. HTH Chris. > I am trying to find the syntax to pass a wildcard query through to > postgres. Basically I just want to use the user input as a substring of the > actual query to postgres. > It can even be simpler, I realy only need the wildcard at end of the input > string > > i.e. user inputs Smith in form, I want to pick up Smith & Smithsonian. > > Right now I have: > > if ( strlen($NAME) >0): > $NAME = addslashes($NAME); > $NAME = strtolower($NAME); / > $NAME = ucfirst($NAME); //translation final to Upper 1st letter > rest lower as per db format. > > $conn = pg_Connect("dbname=damn_db port=5432"); > if(!$conn) { echo "Error in connecting to DB\n"; exit; } > $result = pg_Exec($conn, "SELECT * FROM table2 WHERE surname = > '$NAME' "); > For whatever reason the *~ matching does not work in PHP4 (ie surname *~ ) > (or more precisely I can't get it to work) > > Any suggestions?
You could try LIKE and %, but I think it is ~* and not *~ Saludos, Jesus. On Thu, 5 Apr 2001, rickf wrote: > Hi, > > I am trying to find the syntax to pass a wildcard query through to postgres. > Basically I just want to use the user input as a substring of the actual > query to postgres. > It can even be simpler, I realy only need the wildcard at end of the input > string > > i.e. user inputs Smith in form, I want to pick up Smith & Smithsonian. > > Right now I have: > > if ( strlen($NAME) >0): > $NAME = addslashes($NAME); > $NAME = strtolower($NAME); / > $NAME = ucfirst($NAME); //translation final to Upper 1st letter > rest lower as per db format. > > $conn = pg_Connect("dbname=damn_db port=5432"); > if(!$conn) { echo "Error in connecting to DB\n"; exit; } > $result = pg_Exec($conn, "SELECT * FROM table2 WHERE surname = > '$NAME' "); > For whatever reason the *~ matching does not work in PHP4 (ie surname *~ ) > (or more precisely I can't get it to work) > > Any suggestions? > > Many thanks. > > > > > > _______________________________ > Rick Frank > Dufferin Research > > mailto:rickf@dufferinresearch.com > ________________________________ > > ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster
Use LIKE, as others have mentioned. The reason the wildcard doesn't work is because it isn't supposed to. No SQL should use it. Adam Lang Systems Engineer Rutgers Casualty Insurance Company http://www.rutgersinsurance.com ----- Original Message ----- From: "rickf" <rickf@dufferinresearch.com> To: <pgsql-php@postgresql.org> Sent: Thursday, April 05, 2001 8:17 PM Subject: [PHP] Wildcard queries via PHP4 > Hi, > > I am trying to find the syntax to pass a wildcard query through to postgres. > Basically I just want to use the user input as a substring of the actual > query to postgres. > It can even be simpler, I realy only need the wildcard at end of the input > string > > i.e. user inputs Smith in form, I want to pick up Smith & Smithsonian. > > Right now I have: > > if ( strlen($NAME) >0): > $NAME = addslashes($NAME); > $NAME = strtolower($NAME); / > $NAME = ucfirst($NAME); //translation final to Upper 1st letter > rest lower as per db format. > > $conn = pg_Connect("dbname=damn_db port=5432"); > if(!$conn) { echo "Error in connecting to DB\n"; exit; } > $result = pg_Exec($conn, "SELECT * FROM table2 WHERE surname = > '$NAME' "); > For whatever reason the *~ matching does not work in PHP4 (ie surname *~ ) > (or more precisely I can't get it to work) > > Any suggestions? > > Many thanks. > > > > > > _______________________________ > Rick Frank > Dufferin Research > > mailto:rickf@dufferinresearch.com > ________________________________ > >
This works for me on 7.1 beta 6; php-4.0.4pl1 $sql="SELECT * FROM customer WHERE $look_in ~*'$text' AND mbewbe='$mbewbe' AND c_state $query_location ORDER BY company_name;"; jeff fitzmyers >>>> For whatever reason the *~ matching does not work in PHP4 (ie surname *~ ) (or more precisely I can't get it to work >>>>>>
As far as I know "LIKE" is case sensitive, where as ~* is regular expression matching and is case insensitive. On Fri, 6 Apr 2001, Jeff Fitzmyers wrote: > This works for me on 7.1 beta 6; php-4.0.4pl1 > > $sql="SELECT * > FROM customer > WHERE $look_in ~*'$text' AND > mbewbe='$mbewbe' AND > c_state $query_location > ORDER BY company_name;"; > > jeff fitzmyers > >>>> > > For whatever reason the *~ matching does not work in PHP4 (ie surname *~
You could try LIKE and %, but I think it is ~* and not *~ Saludos, Jesus. On Thu, 5 Apr 2001, rickf wrote: > Hi, > > I am trying to find the syntax to pass a wildcard query through to postgres. > Basically I just want to use the user input as a substring of the actual > query to postgres. > It can even be simpler, I realy only need the wildcard at end of the input > string > > i.e. user inputs Smith in form, I want to pick up Smith & Smithsonian. > > Right now I have: > > if ( strlen($NAME) >0): > $NAME = addslashes($NAME); > $NAME = strtolower($NAME); / > $NAME = ucfirst($NAME); //translation final to Upper 1st letter > rest lower as per db format. > > $conn = pg_Connect("dbname=damn_db port=5432"); > if(!$conn) { echo "Error in connecting to DB\n"; exit; } > $result = pg_Exec($conn, "SELECT * FROM table2 WHERE surname = > '$NAME' "); > For whatever reason the *~ matching does not work in PHP4 (ie surname *~ ) > (or more precisely I can't get it to work) > > Any suggestions? > > Many thanks. > > > > > > _______________________________ > Rick Frank > Dufferin Research > > mailto:rickf@dufferinresearch.com > ________________________________ > > ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster
yes the easiest way is select * from table where LIKE '%$NAME%' for case sensitive search or select * from table where ILIKE '%$NAME%' if the you want to do a case insensitive search much, much, much faster than regular expression regards, Peter ----- Original Message ----- From: "Jesus Aneiros" <aneiros@ucfinfo.ucf.edu.cu> To: <beloshapka@mnogo.ru> Cc: <pgsql-php@postgresql.org> Sent: Friday, April 06, 2001 1:28 PM Subject: Re: [PHP] Wildcard queries via PHP4 > You could try LIKE and %, but I think it is ~* and not *~ > > Saludos, Jesus. > > On Thu, 5 Apr 2001, rickf wrote: > > > Hi, > > > > I am trying to find the syntax to pass a wildcard query through to postgres. > > Basically I just want to use the user input as a substring of the actual > > query to postgres. > > It can even be simpler, I realy only need the wildcard at end of the input > > string > > > > i.e. user inputs Smith in form, I want to pick up Smith & Smithsonian. > > > > Right now I have: > > > > if ( strlen($NAME) >0): > > $NAME = addslashes($NAME); > > $NAME = strtolower($NAME); / > > $NAME = ucfirst($NAME); file://translation final to Upper 1st letter > > rest lower as per db format. > > > > $conn = pg_Connect("dbname=damn_db port=5432"); > > if(!$conn) { echo "Error in connecting to DB\n"; exit; } > > $result = pg_Exec($conn, "SELECT * FROM table2 WHERE surname = > > '$NAME' "); > > For whatever reason the *~ matching does not work in PHP4 (ie surname *~ ) > > (or more precisely I can't get it to work) > > > > Any suggestions? > > > > Many thanks. > > > > > > > > > > > > _______________________________ > > Rick Frank > > Dufferin Research > > > > mailto:rickf@dufferinresearch.com > > ________________________________ > > > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org >