[freetds] Warning: odbc_exec() [function.odbc-exec]: SQL error: [unixODBC][FreeTDS][SQL Server]Invalid cursor state, SQL state 24000 in SQLExecDirect in

Ran September ran.september at gmail.com
Thu Feb 19 01:18:18 EST 2009


oh, sorry i had a follow up question. does odbc freetds can execute a query
like this:

        $sql2="SELECT * FROM events where company = '$custid' and "."gage_sn
= '$cal' and ". "(event_type like '%cal%' or event_type = 'Repair' or
event_type = 'Op-Check')";

cause when i executed it:
while (odbc_fetch_row($rs2))
        {
          $etype=trim(odbc_result($rs2,"event_type"));
          $enum=odbc_result($rs2,"event_num");
          $edate=odbc_result($rs2,"event_date");
          $edate = date("M-j-Y", strtotime($edate));
          $eresult=trim(odbc_result($rs2,"event_result"));
          ?>
i received the following error:
*Warning*: odbc_fetch_row(): 9 is not a valid ODBC result resource in *
/var/www/localhost/htdocs/customer.microprecision.com/gage.php* on line *180
* i wonder why, the syntax looks right to me. do you think the
"(event_type like '%cal%' or event_type = 'Repair' or event_type =
'Op-Check')"; from $sql2 variable causing the error?

Thanks again.

On Wed, Feb 18, 2009 at 8:33 PM, James K. Lowden <jklowden at freetds.org>wrote:

> Ran September wrote:
> > i will try to become a "better programmer" :-D
>
> And so you are doing.  :-)
>
> > although i didn't get the "outer join to mpc_web_users" part
>
>
> http://publib.boulder.ibm.com/infocenter/rbhelp/v6r3/index.jsp?topic=/com.ibm.redbrick.doc6.3/ssg/ssg74.htm
> http://en.wikipedia.org/wiki/Join_(SQL)#Outer_joins<http://en.wikipedia.org/wiki/Join_%28SQL%29#Outer_joins>
>
> I can't tell from your script what the relationship is between gages and
> mpc_web_users.  There doesn't seem to be any; the results of the first
> query don't seem to affect $userid, which is what's used as a key in the
> second query.
>
> If $userid is invariant within the loop, the second query could be
> factored out.  Get the row(s) from mpc_web_users, then proceed with gages.
>
>
> If the two are related -- if the row you want from mpc_web_users varies
> with the data you fetch from gages -- then fetch both parts at once,
> something like:
>
>        SELECT g.*, U.nusers
>        FROM gages as g
>        left outer join (
>                select count(*) as nusers, user_name
>                from mpc_web_users
>        ) as U
>        on g.something = U.user_name
>         where company = '$custid'
>        and gage_sn ='$sn'
>
> That's just one approach.  Depending on your data and exactly what you're
> trying to do, several alternatives come to mind.  Cf. "cross join".
>
> All to say: SQL is your friend.  Learn it.  Use it. Exploit it.  Not to be
> a better programmer, however nice that might be, but to work less.  Create
> more from less code by letting the database do the work for you.  If
> you're going to spend your day scripting webservers, I can't offer better
> advice.
>
> > but is it true that installing the mssql.so will solve this?
>
> No.  Please re-read the faq.  Remember: "one active statement at a time
> per connection" is a property of the *protocol*.  The server won't accept
> a second query until it's done answering the first one.
>
> --jkl
> _______________________________________________
> FreeTDS mailing list
> FreeTDS at lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/freetds
>



-- 
R



More information about the FreeTDS mailing list