我使用Codeigniter 3框架作为我的应用程序,我使用迁移库。我编写了一个创建'user_type‘表的对象,并将其插入到三行。
以下是代码:
private $tableName = 'user_type';
public function up() {
$sql = "CREATE TABLE `$this->tableName` (
`id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` CHAR(120) NOT NULL
) ENGINE = InnoDB;";
$sql .= "INSERT INTO `$this->tableName` (`id`, `name`) VALUES
(1, 'user'), (2, 'provider'), (3, 'admin');";
$this->db->query($sql);
}如果我想使用迁移,它将删除一条带有以下文本的错误消息:发生了数据库错误
错误号: 1064 您的SQL语法有错误;请检查与MySQL服务器版本对应的手册,以便在第4行使用接近“INSERT INSERT
user_type(id,name)值”(1,“user”),(2,“provider”)的正确语法。 创建表user_type(idTINYINT无符号非空AUTO_INCREMENT主键,nameCHAR(120) NULL )引擎=InnoDB;插入user_type(id,name)值(1,'user'),(2,'provider'),(3,admin‘); 文件名: C:/xampp/htdocs/rentacar/application/migrations/20151211113200_usertype_table_data.php 线路号码: 18
其中有趣的部分是,如果我回显$sql变量,并在phpmyadmin中运行它,它就工作得很好。
发布于 2018-05-17 11:22:24
不能一次执行多个sql语句。
拆分语句并执行每个语句,如下所示。
private $tableName = 'user_type';
public function up() {
// First
$sql = "CREATE TABLE `$this->tableName` (
`id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` CHAR(120) NOT NULL
) ENGINE = InnoDB;";
$this->db->query($sql);
// Second
$sql = "INSERT INTO `$this->tableName` (`id`, `name`) VALUES
(1, 'user'), (2, 'provider'), (3, 'admin');";
$this->db->query($sql);
}发布于 2015-12-11 11:35:20
使用dbfore创建表,
$this->load->dbforge();
$tableName = 'user_type';
$this->dbforge->add_field(array(
'id' => array(
'type' => 'TINYINT UNSIGNED NOT NULL'
),
'name' => array(
'type' => 'VARCHAR',
'constraint' => '120',
)
));
$this->dbforge->create_table($tableName);
$sql = "INSERT INTO `$tableName` (`id`, `name`) VALUES
(1, 'user'), (2, 'provider'), (3, 'admin');";
$this->db->query($sql);编辑
在这种情况下,尝试像这样中断查询
$tableName = "user_type";
$sql = "";
$sql = "CREATE TABLE `$tableName` (
`id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` CHAR(120) NOT NULL
) ENGINE = InnoDB;";
echo $this->db->query($sql);
$sql = " INSERT INTO `$tableName` (`id`, `name`) VALUES
(1, 'user'), (2, 'provider'), (3, 'admin')";
echo $this->db->query($sql);https://stackoverflow.com/questions/34222410
复制相似问题