ID:               28264
 User updated by:  csaba at alum dot mit dot edu
 Reported By:      csaba at alum dot mit dot edu
-Status:           Closed
+Status:           Open
 Bug Type:         SQLite related
 Operating System: Win 2K Pro
 PHP Version:      5CVS-2004-05-03 (dev)
 New Comment:

This is still behaving in the same way as originally described (just
tested on PHP 5.0.4-dev 11-Mar-2005).  Here is slightly nicer code to
show the problem:

<?php
$db = sqlite_open(':memory:', 0666, $sqliteerror);
$tbl = "delme";
$multiQuery = "CREATE TABLE $tbl " .
              "(foo INTEGER PRIMARY KEY, bar TEXT);" .
              "INSERT INTO $tbl VALUES (null, 'Hi Mom');";
$dbRes = sqlite_query ($db, $multiQuery);
$creationTest = "PRAGMA table_info('$tbl');";
$insertTest = "SELECT * FROM $tbl;";
$acT = sqlite_array_query ($db, $creationTest, SQLITE_ASSOC);
print "<br><br>Table was created:<br>";
var_dump ($acT);
$aiT = sqlite_array_query ($db, $insertTest, SQLITE_ASSOC);
print "<br><br>";
if ($aiT)
{print "with rows:<br>"; var_dump ($aiT); }
else print "but nothing was inserted";
?>

Csaba


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

[2004-07-10 15:14:35] [EMAIL PROTECTED]

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.

"Fixed" in CVS.

http://cvs.php.net/diff.php/pecl/sqlite/sqlite.c?r1=1.62.2.21&r2=1.62.2.22&ty=u



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

[2004-05-27 00:15:40] saleh at sfsj dot net

I also want to add that even if you try to use transactions to execute
multiple queries..
I tried to use BEGIN; and BEGIN TRANSACTION; but both of them will not
work and nothing will happen..

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

[2004-05-03 22:41:50] csaba at alum dot mit dot edu

Description:
------------
The sqlite_query page in a prominent box declares that SQLite will
execute multiple queries separated by semicolons, but this seems not to
be the case according to the test below.  While I posted a workaround
for this, it is not very efficient because you have to send each query
separately.

I have tested the command line version of SQLite (2.8.13) and it does
accept multiple queries separated by semicolons.

Also, if dealing with this problem, I'd like to suggest that if the
final query is a SELECT or other statement which produces some result
normally destined for the user, that it be returned to the caller that
way.  The documentation makes it seems like maybe it will and maybe it
won't, saying it's undefined.  In particular, it would be helpful if
SELECT and PRAGMA returned their results.  If you indulge me on that,
please extend the functionality to sqlite_array_query.

Thanks,
Csaba Gabor

Reproduce code:
---------------
$db = sqlite_open(':memory:', 0666, $sqliteerror);
$tbl = "delme";
$multiQuery = "CREATE TABLE $tbl (foo INTEGER PRIMARY KEY, bar TEXT);"
.
              "INSERT INTO $tbl VALUES (null, 'Hi Mom');";
$dbRes = sqlite_query ($db, $multiQuery);
$creationTest = "PRAGMA table_info('$tbl');";
$insertTest = "SELECT * FROM $tbl;";
$acT = sqlite_array_query ($db, $creationTest, SQLITE_ASSOC);
var_dump ($acT);
print "<br><br>Table was created,<br>";
$aiT = sqlite_array_query ($db, $insertTest, SQLITE_ASSOC);
var_dump ($aiT);
print "<br>but nothing was inserted";


Expected result:
----------------
I expect to that the SQL INSERT statement was carried out

Actual result:
--------------
However, SQL statements after the first ';' seem to be ignored.  Thus,
the second var_dump only gets an empty array.


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


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

Reply via email to