怎么设置php.ini允许sql语句插入空值到mysql里_php读取.sql文件,写入mysql,navicat显示乱码,编码设置...
案例:
php文件:install.php
--------編碼:php保存文件的編碼、php header編碼、php程序的默認編碼、php寫入數據庫的編碼
php讀取的sql代碼文件:php.sql
--------編碼:sql保存文件的編碼
mysql數據庫:test1
--------編碼:mysql數據庫程序的默認編碼、test1的字符集編碼、排序規則,表里邊每個字段的字符集編碼和排序規則
navicat軟件
--------編碼:建立連接時的編碼
install.php文件的源代碼:<?php
header("Content-type: text/html; charset=gb2312");
//讀取文件內容
$_sql = file_get_contents('phplyb.sql');
$_arr = explode(';', $_sql);
$_mysqli = new mysqli('localhost','root','11111111');
if (mysqli_connect_errno()) {
exit('連接數據庫出錯');
}
//執行sql語句
foreach ($_arr as $_value) {
$_mysqli->query("SET NAMES 'gb2312'");
$_mysqli->query("CREATE DATABASE IF NOT EXISTS test1 DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;");
$_mysqli->query("USE test1");
$_mysqli->query($_value.';');
}
$_mysqli->close();
$_mysqli = null;
?>
問題:案例中那么多的編碼,一不注意就碰到亂碼問題,到底該怎么設置?
分析:
親測。實際上,其他的編碼都不重要,mysql、php、navicat以及php header的語言編碼都可以默認。主要是保持這幾個編碼一致:sql保存文件的編碼、php文件中兩個mysqli->query語句中的編碼和排序規則、數據庫表里邊每個字段的字符集編碼和排序規則,都是utf8或者都是gb2312。
另外,如果需要指定mysql數據庫程序的默認編碼,可以在my.ini里添加如下參數:[mysql]
default-character-set=utf8
==========================================
[mysqld]
default-character-set=utf8
箭頭所指的地方確保為utf8(注意不是utf-8),navicat 里的使用的是mysql字符集(此時不用再選擇utf-8編碼), 問題才得以解決!
總結
以上是生活随笔為你收集整理的怎么设置php.ini允许sql语句插入空值到mysql里_php读取.sql文件,写入mysql,navicat显示乱码,编码设置...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle数据库恢复参数文件位置,Or
- 下一篇: mysql数据库二进制_Mysql数据库