|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2001-10-24 05:19 UTC] Grant dot Walters at walters dot co dot nz
Came across this issue when doing my data conversions. If the fields have single quotes in them, odbc_do fails.
I have tested this against the Openlink 3.2 and 4.1 SDK's and found that using odbc_prepare works fine.
Basic Script
------------
<?
$conn = odbc_connect("$dsn","","","$cursor");
$sql="SELECT ID,Category,description FROM card_type WHERE description='IMPEYS'";
echo "<BR><b>SQL:</b> $sql<BR>";
$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 "<BR><b>SQL:</b> $sql<BR>";
$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 "<BR><b>SQL:</b> $sql<BR>";
$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 "<BR><b>SQL:</b> $sql<BR>";
$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 "<BR><b>SQL:</b> $sql<BR>";
$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
*/
?>
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 09:00:01 2025 UTC |
Sorry about the delay. I have tested with the 4.1 openlink and have drawn the same basic conclusions as previously with odbc_do. A straight query can not be built when the value being looked for contains a (') character. No combination of character escaping or quote usage (" vs ') seems to alleviate the issue.