鍍金池/ 問答/PHP  數(shù)據(jù)庫/ php執(zhí)行sql文件亂碼,不完整

php執(zhí)行sql文件亂碼,不完整

我想通過php讀取sql文件創(chuàng)建數(shù)據(jù)庫并且寫入一些初始的數(shù)據(jù),于是我寫了以下php代碼和sql
經(jīng)過1樓大神提示,代碼已跑通
<?php
//讀取文件內(nèi)容
$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('連接數(shù)據(jù)庫出錯');
}
//執(zhí)行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 '發(fā)布時間',
  `bgcolor` VARCHAR(10) DEFAULT '#FFDFFF' COMMENT '背景顏色',
  `content` VARCHAR(200) NOT NULL COMMENT '留言內(nèi)容'
)ENGINE=INNODB CHARSET=UTF8;

-- 插入一些土味情話當初始數(shù)據(jù) 
INSERT message(username,content) VALUES
('漁潅頭A。','“對不起?!薄澳阌肋h都不要和我說對不起,永遠都不要?!?),
('僅剩的余溫','你知道我最大的缺點是什么嗎?是缺點你'),
('青春是肆無忌憚旳揮霍つ','你是哪里人?湖南人。不,是我的心上人。'),
('賣女孩的小伙柴','你的臉上有點東西,有什么?有點漂亮。'),
('愛人の頭顱','到家了嗎?沒有,沒你的地方都不算家。');
運行以后沒有報錯,var_dump出來的數(shù)據(jù)如下:
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 '發(fā)布時間',
  `bgcolor` VARCHAR(10) DEFAULT '#FFDFFF' COMMENT '背景顏色',
  `content` VARCHAR(200) NOT NULL COMMENT '留言內(nèi)容'
)ENGINE=INNODB CHARSET=UTF8' (length=394)
  3 => string '

INSERT message(username,content) VALUES
('漁潅頭A。','“對不起?!薄澳阌肋h都不要和我說對不起,永遠都不要。”'),
('僅剩的余溫','你知道我最大的缺點是什么嗎?是缺點你'),
('青春是肆無忌憚旳揮霍つ','你是哪里人?湖南人。不,是我的心上人。'),
('賣女孩的小伙柴','你的臉上有點東西,有什么?有點漂亮。'),
('愛人の頭顱','到家了嗎?沒有,沒你的地方都不算家。')' (length=489)
  4 => string '
' (length=2)

有以下兩個問題,是哪里不對呢:

  • 創(chuàng)建出來的message表注釋是亂碼
  • 表創(chuàng)建出來了,但是初始數(shù)據(jù)并沒有寫入(INSERT語句沒有問題,在mysql命令行里是可以成功的)
  • 如果想在sql里寫注釋是不是會影響讀取,sql里不能有回車或者換行?
回答
編輯回答
來守候

關(guān)于亂碼:
$conn = mysqli_connect('localhost','root',''); 下面添加:

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

就可以了,加注釋不影響讀取,測試代碼可以執(zhí)行:
圖片描述

2017年7月22日 11:14