php-windows Digest 3 Mar 2001 15:49:14 -0000 Issue 472
Topics (messages 5801 through 5805):
Microsoft Access prepared statement with parameters problem
5801 by: Chris Poirier
5805 by: Gonzalo Vera
Re: Cash Offer!!
5802 by: hollyjacobsemail77.excelonline.com
5803 by: jannetfreebish67.juno.com
$PHP_SELF not producing the goods.
5804 by: Jess Perez
Administrivia:
To subscribe to the digest, e-mail:
[EMAIL PROTECTED]
To unsubscribe from the digest, e-mail:
[EMAIL PROTECTED]
To post to the list, e-mail:
[EMAIL PROTECTED]
----------------------------------------------------------------------
Hi there,
I'm attempting to execute prepared statements with parameters against an
Access 97 database, and am having some trouble. I'm sure I'm missing
something really obvious, but I just can't see it, and I'm hoping someone
out there can help.
In the following code, assume that $connection holds a valid and otherwise
working connection to a database in which there exists a table named
System. Column A is a text column.
$statement = odbc_prepare( $connection, "select * from System where A=?" );
if( odbc_execute( $statement, array( "MachineID" )))
{
odbc_fetch_row( $statement );
print odbc_result( $statement, "A" ) . "<br/>";
}
I have tried many variations on this code, and if there are any ? marks in
the query, regardless what I pass as the second parameter to
odbc_execute(), odbc_execute() always dies with the following message:
Warning: SQL error: [Microsoft][ODBC Microsoft Access Driver]COUNT field
incorrect , SQL state 07001 in SQLExecute in ...
Can anyone tell me what I'm doing wrong?
Thanks, Chris.
Some possibilities:
> $statement = odbc_prepare( $connection, "select * from System where A=?" );
Probably you would be better off using single quotes in the condition,
since you are tryng to match strings, like:
$statement=odbc_prepare($connection,"select * from System where A='?'");
here-^ ^
Also, I'm not sure that wildcards are allowed for string matching
unless you use "like":
$statement = odbc_prepare( $connection, "select * from System where A
like '?'" );
Inside access, wildcards are * and ?, but when invoked through ODBC, *
turns to %, and I think ? turns to _, but I'm not sure. Try the manual
on that.
And last, to eliminate possibilities, enclose any table or field names
that might by far chance be a reserved word, in sqare brackets. I
don't think that "A" is a reserved word, and am not sure about
"System", but just to make sure... and end your statement with a
semicolon. The final result would be:
$statement = odbc_prepare( $connection, "select * from [System] where
[A] like '?';" );
That, for syntax. But going further, "?" (or "_") is the single
character matching wildcard. Why would your comparison use only a
single character? If "A" is a single char field, use "like '%'", it
would be safer and probably faster. But, there might be the chance
that you're NOT trying to do a wildcard comparison, but are trying to
search for the literal "?". Then you would use your actual syntax, but
adding a backslash to escape the special char: "[A]='\?'".
Some wild shots... hope it works.
Gonzalo.
hi there,
please take a moment to check out the newest cash offer.
cash is waiting for you! Click Below
Or copy the link and paste it in your browser
http://www.geocities.com/omega777799/
Hey...Janet Here... We Haven't Talked In So Long!!
How Have You Been? Thought I would Forward you this email!
I usually delete these but I opened this one, like what I saw,
and thought you would like to see this.
http://www.geocities.com/rush009900/
IF THE LINK IS NOT HIGHLIGHTED OR YOU CANNOT CLICK ON IT.
COPY AND PASTE IT IN YOUR BROWSER.
Hi,
I am using
PHP4.0.4pl1 in cgi mode
Apache 1.3.14
WIN2000
I point my browser at www.domain.com/phpinfo.php and the $PHP_SELF variable
to contains "/php/php.exe/phpinfo.php" instead of just "phpinfo.php".
Anyone know what is causing this and how to correct it? The manual says it
is supposed to contain only "phpinfo.php"
--
Regards
Jess Perez