Hi
Manish Bisht píše v St 02. 08. 2017 v 16:48 +0530:
I have one create sql query in one variable.
Is there any way I can get the table name from the sql query using
sql
parser or any other other way.
Yes, SQL parser can do that:
<?php
require 'vendor/autoload.php';
use PhpMyAdmin\SqlParser\Parser;
use PhpMyAdmin\SqlParser\Utils\Query;
use PhpMyAdmin\SqlParser\Statements\CreateStatement;
$query = 'CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE
utf8_bin)';
$parser = new Parser($query);
$statement = $parser->statements[0];
foreach ($parser->statements as $statement) {
if ($statement instanceof CreateStatement) {
echo "Creating table $statement->name\n";
}
}
I am thinking of splitting the query by single space and then using
the 3 value of the array as the table name.
No, please do not make any assumptions on the SQL query structure, this
is very easy to break:
CRATE TABLE `table with spaces` ...
CREATE TABLE IF NOT EXIST `table` ...
CREATE TABLE /* comment */ `table` ...
--
Michal Čihař |
https://cihar.com/ |
https://weblate.org/