PDO创建表不起作用

时间:2013-04-24 01:48:50

标签: php mysql pdo

使用PDO插入新表时遇到问题。我得到的错误是:

  

SQLSTATE [42000]:语法错误或访问冲突:1064您有   SQL语法错误;查看与您的手册相对应的手册   MySQL服务器版本,使用“25500”附近正确的语法(id   INT(11)NOT NULL AUTO_INCREMENT,date TIMESTAMP NOT NULL DEFAUL'at   第149440行不存在!

请注意$ id是表名。

function createTable($dbh, $id, $description)
{
try {
$stmt = "CREATE TABLE '$id' (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`prodtitle` VARCHAR(50) NOT NULL ,
`unitsize` VARCHAR(10) NOT NULL ,
`price` VARCHAR(10) NOT NULL ,
`wasprice` VARCHAR(10) NOT NULL ,
`specprice` VARCHAR(10) NOT NULL ,
PRIMARY KEY (`id`) ) COMMENT = '$description'";

if($dbh->exec($stmt) !== false) echo 'The sites table is created';
} 
catch (PDOException $e) { echo $e->getMessage();
}
}

它必须是简单的东西,但我不能选择它。

1 个答案:

答案 0 :(得分:6)

TableName不应该用单引号换行,因为它不是字符串文字。尝试使用反引号更改单引号,

$stmt = "CREATE TABLE `$id` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`prodtitle` VARCHAR(50) NOT NULL ,
`unitsize` VARCHAR(10) NOT NULL ,
`price` VARCHAR(10) NOT NULL ,
`wasprice` VARCHAR(10) NOT NULL ,
`specprice` VARCHAR(10) NOT NULL ,
PRIMARY KEY (`id`) ) COMMENT = '$description'"