我想通过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里不能有回车或者换行?
1 回答
![?](http://img1.sycdn.imooc.com/5333a207000118af02200220-100-100.jpg)
宝慕林4294392
TA贡献2021条经验 获得超8个赞
关于乱码:
在 $conn = mysqli_connect('localhost','root','');
下面添加:
mysqli_query($conn,'set names utf8');
就可以了,加注释不影响读取,测试代码可以执行:
- 1 回答
- 0 关注
- 382 浏览
添加回答
举报
0/150
提交
取消