为了账号安全,请及时绑定邮箱和手机立即绑定

php执行sql文件乱码,不完整

php执行sql文件乱码,不完整

PHP
狐的传说 2019-03-11 18:12:19
我想通过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 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

关于乱码:
$conn = mysqli_connect('localhost','root',''); 下面添加:

mysqli_query($conn,'set names utf8');

就可以了,加注释不影响读取,测试代码可以执行:
https://img1.sycdn.imooc.com//5c8f3f8a0001845908000118.jpg

查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 382 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信