ID:               31668
 User updated by:  exaton at free dot fr
 Reported By:      exaton at free dot fr
 Status:           Open
 Bug Type:         MySQLi related
 Operating System: WinXP
 PHP Version:      5CVS-2005-01-23 (dev)
 New Comment:

OK, realised that of course the $SQL -> error is set (when it is set)
right after multi_query() is called. So that should be :

if ($SQL -> multi_query(...))
{
   do { ... } while (...);
}
else
  echo $SQL -> error; // (*)

But it works out to exactly the same thing. I understand I would notice
a difference only if I were looking out for SQL errors in intermediate
queries sent by multi_query(), making those errors accessible with
next_result() calls. Whatever -- N/A here as far as I can see.


Previous Comments:
------------------------------------------------------------------------

[2005-01-23 14:26:43] exaton at free dot fr

Description:
------------
Using PHP 5.0.4-dev WinXP snapshot from Jan 23 2005 10:14:07, running
Apache 2.0.52 and MySQL 4.1.9 .

I've seen other bugs possibly relating to this issue, e.g.
http://bugs.php.net/bug.php?id=29272 or
http://bugs.php.net/bug.php?id=28860 , but I think I have something
more precise to describe. The querying works half the time anyway, so
it's not an evident MySQL error.

I find that when I run a MySQLi multi_query, the first time the results
are perfectly correct, then on browser reload the multi-query fails with
an SQL error pertaining to the query concatenation. Reload again, fine.
Reload again, same error. Etc.

I'm doing this : (table 'faq' is simply an AUTO_INCREMENT 'indx' field,
then 'question' and 'answer' TEXT fields) :

$SQL = new mysqli(/*...connection information...*/);

$SQL -> multi_query('
  SELECT indx FROM faq;
  SELECT question, answer FROM faq
');

do {
  $res = $SQL -> store_result();
        
  if ($SQL -> errno == 0)
  {
    while ($arr = $res -> fetch_assoc())
      print_r($arr);
    $res -> free();
  }
  else
    echo $SQL -> error; // (*)
}
while ($SQL -> next_result());

$SQL -> close();

So, a first time, I get a bunch of arrays from the first resultset :
Array
(
    [indx] => 1
)
followed by the same number of arrays from the second resultset :
Array
(
    [question] => This is a question
    [answer] => This is an answer
)
And that is fine.

Then, browser reload, and I get no arrays at all but a _single_ error
instead, which I show with line (*) :

"You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near '; SELECT question, answer FROM faq' at line 1 "

Browser reload, back to my nice arrays. Browser reload again, error
message. It is _very_ rare that a same situation should occur twice in
a row instead of the alternation.

I've tried concatenating the queries onto a single line, even with no
space at all behind the semicolon. All the same.

So, despite my running MySQL 4.1.9, is this mysqli_multi_query()
related, or is something up with the database server ?

Thanks.



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=31668&edit=1

Reply via email to