我想通过php读取sql文件创建数据库并且写入一些初始的数据,于是我写了以下php代码和sql
经过1楼大神提示,代码已跑通
<?php
//读取文件内容
$sql = file_get_contents('sql/start.sql');
$arr = explode(';', $sql);
var_dump($arr);
$conn = mysqli_connect('localhost','root','');
mysqli_query($conn,'set names utf8');
if (!$conn) {
exit('连接数据库出错');
}
//执行sql语句
foreach ($arr as $value) {
//var_dump(str_replace("\n",'',$value));
mysqli_query($conn,$value);
}
//exit();
mysqli_close($conn);
CREATE DATABASE IF NOT EXISTS wishwall DEFAULT CHARACTER SET 'UTF8';
USE wishwall;
CREATE TABLE IF NOT EXISTS message (
`id` INT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号',
`username` VARCHAR(20) NOT NULL UNIQUE COMMENT '留言用户名',
`posttime` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间',
`bgcolor` VARCHAR(10) DEFAULT '#FFDFFF' COMMENT '背景颜色',
`content` VARCHAR(200) NOT NULL COMMENT '留言内容'
)ENGINE=INNODB CHARSET=UTF8;
-- 插入一些土味情话当初始数据
INSERT message(username,content) VALUES
('渔潅頭A。','“对不起。”“你永远都不要和我说对不起,永远都不要。”'),
('僅剩的余溫','你知道我最大的缺点是什么吗?是缺点你'),
('青春是肆无忌惮旳挥霍つ','你是哪里人?湖南人。不,是我的心上人。'),
('卖女孩的小伙柴','你的脸上有点东西,有什么?有点漂亮。'),
('爱人の头颅','到家了吗?没有,没你的地方都不算家。');
运行以后没有报错,var_dump出来的数据如下:
array (size=5)
0 => string 'CREATE DATABASE IF NOT EXISTS wishwall DEFAULT CHARACTER SET 'UTF8'' (length=67)
1 => string '
USE wishwall' (length=16)
2 => string '
CREATE TABLE IF NOT EXISTS message (
`id` INT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号',
`username` VARCHAR(20) NOT NULL UNIQUE COMMENT '留言用户名',
`posttime` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间',
`bgcolor` VARCHAR(10) DEFAULT '#FFDFFF' COMMENT '背景颜色',
`content` VARCHAR(200) NOT NULL COMMENT '留言内容'
)ENGINE=INNODB CHARSET=UTF8' (length=394)
3 => string '
INSERT message(username,content) VALUES
('渔潅頭A。','“对不起。”“你永远都不要和我说对不起,永远都不要。”'),
('僅剩的余溫','你知道我最大的缺点是什么吗?是缺点你'),
('青春是肆无忌惮旳挥霍つ','你是哪里人?湖南人。不,是我的心上人。'),
('卖女孩的小伙柴','你的脸上有点东西,有什么?有点漂亮。'),
('爱人の头颅','到家了吗?没有,没你的地方都不算家。')' (length=489)
4 => string '
' (length=2)
有以下两个问题,是哪里不对呢:
- 创建出来的message表注释是乱码
- 表创建出来了,但是初始数据并没有写入(INSERT语句没有问题,在mysql命令行里是可以成功的)
- 如果想在sql里写注释是不是会影响读取,sql里不能有回车或者换行?
宝慕林4294392