1

只是无法使用 PDO 插入新表。我得到的错误是:

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

请注意 $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();
}
}

它一定很简单,但我就是挑不出。

4

1 回答 1

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'"
于 2013-04-24T01:50:56.217 回答