我的代码类似于以下内容:
$sth = $dbh->prepare("CREATE TABLE IF NOT EXISTS ? (`id` bigint(100) unsigned NOT NULL AUTO_INCREMENT");
$sth->execute('test');
Run Code Online (Sandbox Code Playgroud)
我最终得到了错误:
ERROR 1064 (42000): 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'
Run Code Online (Sandbox Code Playgroud)
从跟踪中我发现perl DBI在表名周围放了单引号,mysql不喜欢.如何告诉DBI不要放任何引号或放(`)而不是单引号?
这只是按照你的要求做的.给定一个字符串时,?相当于一个字符串文字.所以
SELECT * FROM Table WHERE field = ?
Run Code Online (Sandbox Code Playgroud)
手段
SELECT * FROM Table WHERE field = 'test'
Run Code Online (Sandbox Code Playgroud)
和
SELECT * FROM ?
Run Code Online (Sandbox Code Playgroud)
手段
SELECT * FROM 'test'
Run Code Online (Sandbox Code Playgroud)
你需要使用
$dbh->prepare("
CREATE TABLE IF NOT EXISTS ".( $dbh->quote_identifier('test') )." (
`id` bigint(100) unsigned NOT NULL AUTO_INCREMENT
)
");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |