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 <https://geekuni.com/> P: +44 7931 946 062 E: and...@geekuni.com