#31668 [Opn]: multi_query works exactly every other time
| From: | exaton at free dot fr | Date: | Sun, 23 Jan 2005 13:39:34 +0000 |
| Subject: | #31668 [Opn]: multi_query works exactly every other time | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-72695@lists.php.net to get a copy of this message | ||
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