RE: [PHP] PHP Openlink/Progress Problems
> On Tue, 23 Oct 2001 16:35, Grant Walters wrote: > > I'm going nuts trying to work out how to handle errors from data > > statement with single quotes. PHP 4.0.6 appears to be mangling > > something somewhere. > > All statements work with the Openlink odbctest program > > Any help appreciated > > > > > $conn = odbc_connect("$dsn","","","$cursor"); > > $sql="SELECT ID,Category,description FROM card_type WHERE > > description='IMPEYS'"; echo "SQL: $sql"; > > $results = odbc_do($conn,$sql); > > if ($results) { > > while (odbc_fetch_into($results,$row)) { > > echo $row[0]." ".$row[1]." ".$row[2]."\n"; > > } > > } > > $sql="SELECT ID,Category,description FROM card_type WHERE description > > LIKE '%PEP%'"; echo "SQL: $sql"; > > $results = odbc_do($conn,$sql); > > if ($results) { > > while (odbc_fetch_into($results,$row)) { > > echo $row[0]." ".$row[1]." ".$row[2]."\n"; > > } > > } > > $sql='SELECT ID,Category,description FROM card_type WHERE description > > LIKE "%PEP%"'; echo "SQL: $sql"; > > $results = odbc_do($conn,$sql); > > if ($results) { > > while (odbc_fetch_into($results,$row)) { > > echo $row[0]." ".$row[1]." ".$row[2]."\n"; > > } > > } > > $sql='SELECT ID,Category,description FROM card_type WHERE > > description="PEPPERELL\'S"'; echo "SQL: $sql"; > > $results = odbc_do($conn,$sql); > > if ($results) { > > while (odbc_fetch_into($results,$row)) { > > echo $row[0]." ".$row[1]." ".$row[2]."\n"; > > } > > } > > $sql="SELECT ID,Category,description FROM card_type WHERE > > description=\"PEPPERELL'S\""; echo "SQL: $sql"; > > $results = odbc_do($conn,$sql); > > if ($results) { > > while (odbc_fetch_into($results,$row)) { > > echo $row[0]." ".$row[1]." ".$row[2]."\n"; > > } > > } > > ?> > > If I were doing that with mysql, I would use > $sql="SELECT ID,Category,description FROM card_type WHERE > description='PEPPERELL\'S'; echo "SQL: $sql"; I do the same for MySQL. Appears there is a bug somewher in the PHP odbc code. The Openlink team suggested using odbc_prepare instead, and that works fine, so I'll be converting all of my classes to use odbc_prepare statements instead of odbc_do. I've just logged this as a bug on the php bug site, so we'll see if they can shed any further light on it. > Given that you are probably getting the description value passed in, you > might want to check your magic_quotes settings, and also perhaps echo the > incoming value for description to see whether it is as you expect. > > You might have to play around with addslashes to get the right result. Seems, that addslashes and magic_quotes have no impact at all. I've downloaded and checked the M$ ODBC SDK and the error 37000 is now error 42000 under ODBC 3.5? It means that there is a syntax error in the SQL command being passed. considering that everything works fine from the odbctest program provided by Openlink and also works with odbc_prepare using ? and parameters, it must be in the PHP stuff somewhere. > > > OUTPUT > > > > > SQL: SELECT ID,Category,description FROM card_type WHERE > > description="PEPPERELL'S" Warning: SQL error: > > [OpenLink][ODBC][Driver]Syntax error or access, SQL state 37000 in > > SQLExecDirect in /usr/local/.WWW/WEBS/_odbc/test.php3 on line 58 > > > Ah, how's the wind today? :-) Ever present. I live right on the coast facing West, so it gets a wee bit rambunctious sometimes :-) Regards Grant Walters Brainbench 'Most Valuable Professional' for Unix Admin Walters & Associates, P O Box 13-043 Johnsonville, Wellington, NEW ZEALAND Telephone: +64 4 4765175, CellPhone 025488265, ICQ# 23511989 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP] PHP Openlink/Progress Problems
On Tue, 23 Oct 2001 16:35, Grant Walters wrote: > I'm going nuts trying to work out how to handle errors from data > statement with single quotes. PHP 4.0.6 appears to be mangling > something somewhere. > All statements work with the Openlink odbctest program > Any help appreciated > > $conn = odbc_connect("$dsn","","","$cursor"); > $sql="SELECT ID,Category,description FROM card_type WHERE > description='IMPEYS'"; echo "SQL: $sql"; > $results = odbc_do($conn,$sql); > if ($results) { > while (odbc_fetch_into($results,$row)) { > echo $row[0]." ".$row[1]." ".$row[2]."\n"; > } > } > $sql="SELECT ID,Category,description FROM card_type WHERE description > LIKE '%PEP%'"; echo "SQL: $sql"; > $results = odbc_do($conn,$sql); > if ($results) { > while (odbc_fetch_into($results,$row)) { > echo $row[0]." ".$row[1]." ".$row[2]."\n"; > } > } > $sql='SELECT ID,Category,description FROM card_type WHERE description > LIKE "%PEP%"'; echo "SQL: $sql"; > $results = odbc_do($conn,$sql); > if ($results) { > while (odbc_fetch_into($results,$row)) { > echo $row[0]." ".$row[1]." ".$row[2]."\n"; > } > } > $sql='SELECT ID,Category,description FROM card_type WHERE > description="PEPPERELL\'S"'; echo "SQL: $sql"; > $results = odbc_do($conn,$sql); > if ($results) { > while (odbc_fetch_into($results,$row)) { > echo $row[0]." ".$row[1]." ".$row[2]."\n"; > } > } > $sql="SELECT ID,Category,description FROM card_type WHERE > description=\"PEPPERELL'S\""; echo "SQL: $sql"; > $results = odbc_do($conn,$sql); > if ($results) { > while (odbc_fetch_into($results,$row)) { > echo $row[0]." ".$row[1]." ".$row[2]."\n"; > } > } > ?> If I were doing that with mysql, I would use $sql="SELECT ID,Category,description FROM card_type WHERE description='PEPPERELL\'S'; echo "SQL: $sql"; Given that you are probably getting the description value passed in, you might want to check your magic_quotes settings, and also perhaps echo the incoming value for description to see whether it is as you expect. You might have to play around with addslashes to get the right result. > OUTPUT > > SQL: SELECT ID,Category,description FROM card_type WHERE > description="PEPPERELL'S" Warning: SQL error: > [OpenLink][ODBC][Driver]Syntax error or access, SQL state 37000 in > SQLExecDirect in /usr/local/.WWW/WEBS/_odbc/test.php3 on line 58 > > > Regards > > Grant Walters > Brainbench 'Most Valuable Professional' for Unix Admin > Walters & Associates, P O Box 13-043 Johnsonville, Wellington, NEW > ZEALAND Telephone: +64 4 4765175, CellPhone 025488265, ICQ# 23511989 Ah, how's the wind today? :-) -- David Robley Techno-JoaT, Web Maintainer, Mail List Admin, etc CENTRE FOR INJURY STUDIES Flinders University, SOUTH AUSTRALIA "I was removed from office," said Tom disappointedly. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP] PHP Openlink/Progress Problems
I'm going nuts trying to work out how to handle errors from data statement with single quotes. PHP 4.0.6 appears to be mangling something somewhere. All statements work with the Openlink odbctest program Any help appreciated SQL: $sql"; $results = odbc_do($conn,$sql); if ($results) { while (odbc_fetch_into($results,$row)) { echo $row[0]." ".$row[1]." ".$row[2]."\n"; } } $sql="SELECT ID,Category,description FROM card_type WHERE description LIKE '%PEP%'"; echo "SQL: $sql"; $results = odbc_do($conn,$sql); if ($results) { while (odbc_fetch_into($results,$row)) { echo $row[0]." ".$row[1]." ".$row[2]."\n"; } } $sql='SELECT ID,Category,description FROM card_type WHERE description LIKE "%PEP%"'; echo "SQL: $sql"; $results = odbc_do($conn,$sql); if ($results) { while (odbc_fetch_into($results,$row)) { echo $row[0]." ".$row[1]." ".$row[2]."\n"; } } $sql='SELECT ID,Category,description FROM card_type WHERE description="PEPPERELL\'S"'; echo "SQL: $sql"; $results = odbc_do($conn,$sql); if ($results) { while (odbc_fetch_into($results,$row)) { echo $row[0]." ".$row[1]." ".$row[2]."\n"; } } $sql="SELECT ID,Category,description FROM card_type WHERE description=\"PEPPERELL'S\""; echo "SQL: $sql"; $results = odbc_do($conn,$sql); if ($results) { while (odbc_fetch_into($results,$row)) { echo $row[0]." ".$row[1]." ".$row[2]."\n"; } } ?> OUTPUT -- SQL: SELECT ID,Category,description FROM card_type WHERE description='IMPEYS' 355 Other Item IMPEYS SQL: SELECT ID,Category,description FROM card_type WHERE description LIKE '%PEP%' 177 Other Item PEPPERELL'S SQL: SELECT ID,Category,description FROM card_type WHERE description LIKE "%PEP%" Warning: SQL error: [OpenLink][ODBC][Driver]Syntax error or access, SQL state 37000 in SQLExecDirect in /usr/local/.WWW/WEBS/_odbc/test.php3 on line 42 SQL: SELECT ID,Category,description FROM card_type WHERE description="PEPPERELL'S" Warning: SQL error: [OpenLink][ODBC][Driver]Syntax error or access, SQL state 37000 in SQLExecDirect in /usr/local/.WWW/WEBS/_odbc/test.php3 on line 50 SQL: SELECT ID,Category,description FROM card_type WHERE description="PEPPERELL'S" Warning: SQL error: [OpenLink][ODBC][Driver]Syntax error or access, SQL state 37000 in SQLExecDirect in /usr/local/.WWW/WEBS/_odbc/test.php3 on line 58 Regards Grant Walters Brainbench 'Most Valuable Professional' for Unix Admin Walters & Associates, P O Box 13-043 Johnsonville, Wellington, NEW ZEALAND Telephone: +64 4 4765175, CellPhone 025488265, ICQ# 23511989 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]