thanks Andrew I need to insert millions of rows so I need to have a good performance using placeholders
On Friday, April 9, 2021, 1:57:25 PM GMT+2, Andrew Solomon <and...@geekuni.com> wrote: The ? is for quoting field values rather than entering table or field names. "SELECT * FROM $table" is probably what you want. On Fri, Apr 9, 2021 at 12:49 PM mailing lists via beginners <beginners@perl.org> wrote: Hello, I am having a problem with a very simple task and I don't see where the fault is. The first query works with problem but the second one fails with this error: ./test.pl OK 1 DBD::mysql::st execute failed: 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 ''test'' at line 1 at ./test.pl line 28.END Does anyone know where the problem is? 1 #!/usr/bin/perl 2 use strict; 3 use warnings; 4 use 5.010; 5 use DBI; 6 7 my %db = ( 8 host => 'mysql.local', 9 user => 'app', 10 password => '12345678', 11 db => 'test_db', 12 ); 13 14 my $dbh = DBI->connect( 15 'dbi:mysql:database='.$db{'db'}.';host='.$db{'host'}.';port=3306', 16 $db{'user'}, 17 $db{'password'}, 18 { AutoCommit => 1, }, 19 ) 20 or die "Can't connect to database: $DBI::errstr\n"; 21 22 23 my $sth = $dbh->prepare("SELECT * FROM test"); 24 $sth->execute() && say "OK 1"; 25 26 my $table="test"; 27 $sth = $dbh->prepare("SELECT * FROM ?"); 28 $sth->execute($table) && say "OK 2" 29 30 say "END"; -- Andrew Solomon Director, Geekuni P: +44 7931 946 062 E: and...@geekuni.com