pdo 寫入到數據庫的內容為中文的時候寫入亂碼
問題描述
<?phpif(empty($_POST['phone'])){ //這個為中文的時候 數據庫亂碼return_json(1,'手機號不能為空'); }if(empty($_POST['pwd'])){return_json(2,'密碼不能為空');}$phone = find('php_user','*','phone='.$_POST['phone']);if($phone){return_json(3,'手機號已存在');}$arr = array('phone' => $_POST['phone'],'pwd' => md5($_POST['pwd']),'add_time' => time(),'nickname' => isset($_POST['nickname']) ? $_POST['nickname'] : $_POST['phone'],'sex' => isset($_POST['sex']) ? $_POST['sex'] : 0,'avatar' => isset($_POST['avatar']) ? $_POST['avatar'] : '');$add = insert('php_user',$arr);return_json(0,'注冊成功');function connect(){ $db = array('charset' => 'utf8','port' => 3306, 'type' => 'mysql','host' => '127.0.0.1', 'user' => 'hao2', 'pass' => 'hao3', 'name' => 'hao1' ); $dsn = "{$db['type']}:host={$db['host']}; dbname={$db['name']}; charset={$db['charset']}; port={$db['port']}" try {//實例化PDO類,創建PDO對象$pdo = new PDO($dsn,$db['user'],$db['pass']); } catch (PDOException $e) {die('數據庫錯誤:'.$e->getMessage()); } return $pdo;}function insert($table,$data=[]){ //連接pdo $pdo = connect(); //創建SQL語句 $sql = "INSERT INTO {$table} SET "; //組裝插入語句 if(is_array($data)){foreach ($data as $k=>$v) { $sql .= $k.'="'.$v.'", ';} }else{return false; } //去掉尾部逗號,并添加分號結束 $sql = rtrim(trim($sql),',').';'; //創建PDO預處理對象 $stmt = $pdo->prepare($sql); //執行新增操作 if($stmt->execute()){if($stmt->rowCount()>0){ return true;} } else {return false; }}
問題解答
回答1:看看你數據庫的編碼方式和你php中的編碼方式
