On Thursday 28 February 2002 00:09, Mike Krisher wrote:
I have a column in a database with a column type of string that holds
catalog numbers. They can be in two formats.
1: 410998
2: 555336-18
The 18 in the dash number represents a length. So there could be multiple
entries with the same base, just a different int after the dash.
I am experiencing two issues: First, when using the catalognumbers in a
SELECT statement, only those without dashes return anything. Is there
something I need to do with my datatype in order to use:
$item = 555336-18;
$sql = SELECT * FROM products WHERE catalognumber = $item;
As your column type is a string your select statement should read:
SELECT * FROM products WHERE catalognumber = '$item'
Second question, when I strip off the dash and following int(s), my select
statement will work, even though the subtring I am then searching for
doesn't really exist in the database. And if I have two numbers with that
same subtring base they are both returned. For Example:
$item1 = 555336-18;
$item2 = 555336-7;
$item = substr($item,0,6);
$sql = SELECT * FROM products WHERE catalognumber = $item;
Both items will be be returned, even without using %LIKE%. I'm guessing
this all stems from my column type. Should I change it to something else,
and if so what? Can anyone help out?
It's probably because by not using single-quotes around $item, you're forcing
your column, which is a string, into a number. The DB does its best and takes
as many leading characters as it can to make this number. It stops when it
gets to the hyphen as it's not a valid digit thus you end up with 555336, and
hence it matches.
--
Jason Wong - Gremlins Associates - www.gremlins.com.hk
/*
A sine curve goes off to infinity, or at least the end of the blackboard.
-- Prof. Steiner
*/
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php