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

Robert Gonzalez robert at robert-gonzalez.com
Thu Feb 19 01:21:49 EST 2009


Try adding some error checking on your calls along the way. When things fail
PHP is pretty good at telling you why.

On Wed, Feb 18, 2009 at 11:18 PM, Ran September <ran.september at gmail.com>wrote:

> 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>
> <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
> _______________________________________________
> FreeTDS mailing list
> FreeTDS at lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/freetds
>



-- 

Robert Gonzalez
http://www.robert-gonzalez.com


More information about the FreeTDS mailing list