Closed GoogleCodeExporter closed 8 years ago
What column type is "test"? The parser doesn't await an expression at this
point. Normally I use Oracle, so the statement is a little bit strange to me.
Original comment by pho...@gmx.de
on 12 Mar 2012 at 12:52
INSERT INTO test (`name`, `test`) VALUES ('\'Superman\'', ''), ('\'Superman\'',
'')
INSERT INTO table ( `col_1`, `col_2` )
VALUES ( 'val_for_col1', 'val_for_col2' ), -- This inserts a row
( 'val_for_col1', 'val_for_col2' ) -- This inserts another row
From http://dev.mysql.com/doc/refman/5.5/en/insert.html
INSERT statements that use VALUES syntax can insert multiple rows. To do this,
include multiple lists of column values, each enclosed within parentheses and
separated by commas. Example:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
The values list for each row must be enclosed within parentheses. The following
statement is illegal because the number of values in the list does not match
the number of column names:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3,4,5,6,7,8,9);
VALUE is a synonym for VALUES in this context. Neither implies anything about
the number of values lists, and either may be used whether there is a single
values list or multiple lists.
Original comment by ben.swin...@gmail.com
on 12 Mar 2012 at 2:34
Ah, ok. Thanks. Try the version on
https://www.phosco.info/publicsvn/php-sql-parser/trunk REV 139. I have enhanced
the output, so your code could have problems with it.
Original comment by pho...@gmx.de
on 12 Mar 2012 at 2:42
Thanks for your quick feedback and continued efforts with this project. Just
tried REV 140 with no luck. Still can replicate the problem using the following.
<?php
require("php-sql-parser.php");
require("php-sql-creator.php");
error_reporting( E_ALL );
ini_set( 'display_errors', 1 );
$sql = "INSERT INTO test (`name`, `test`) VALUES ('\'Superman\'', ''),
('\'sdfsd\'', '')";
$parser = new PHPSQLParser($sql);
echo "<pre>";
print_r( new PHPSQLCreator( $parser->parsed ) );
Original comment by ben.swin...@gmail.com
on 12 Mar 2012 at 3:11
Hm, I have added tests for the issue, which seems to be ok. Please check your
browser cache settings or checkout the version with a Subversion client.
If I execute your test script with the current version, I will get:
PHPSQLCreator Object
(
[created] => INSERT INTO test (`name`,`test`) VALUES ('\'Superman\'',''),('\'sdfsd\'','')
)
This is the same statement as provided in $sql (except some space characters).
Original comment by pho...@gmx.de
on 12 Mar 2012 at 8:05
Apologies, it was indeed my browser cache.
However, REV 141 now has
Fatal error: Multiple access type modifiers are not allowed in
C:\xampp\htdocs\php-sql-parser.php on line 1620
private private function process_record($unparsed) {
At least that one's an easy fix :D
Original comment by ben.swin...@gmail.com
on 13 Mar 2012 at 9:29
Is the issue fixed with the current version (REV 186)?
Original comment by pho...@gmx.de
on 13 Mar 2012 at 12:05
It is indeed. REV 186 does not present the multiple access type modifiers error.
Original comment by ben.swin...@gmail.com
on 13 Mar 2012 at 12:12
:-)
Original comment by pho...@gmx.de
on 13 Mar 2012 at 12:15
Original issue reported on code.google.com by
ben.swin...@gmail.com
on 12 Mar 2012 at 10:07