解决PHP提交MYSQL数据库中文内容乱码方法

 更新时间:2016年11月25日 17:17  点击:1428
PHP提交MYSQL数据库中文内容乱码问题其实与查询乱码是一样的我们只需要把它进行一个简单的调整即可了,在数据库连接处填写mysql_query("set names 'utf8'");即可解决了.
无论是ASP还是PHP程序语言,甚至有其他WEB语言,基础的应用无非就是数据库添加、读取、编辑、删除等需求,再复杂的功能项目都围绕这些进行的。在录入MYSQL数据库的时候提交的中文数据出现乱码问题,这个问题对于新手学习PHP肯定是有遇到过的。

 

其实问题还是比较简单的,肯定是编码不对应导致的。比如页面的编码,数据库字段的编码,以及数据库链接编码问题,这里老蒋全部采用UTF-8编码,那需要寻找这几个地方的问题,就解决乱码问题。

 

第一、页面编码问题

 

我们在WEB页面中,需要全部保持是UTF-8编码。

 

第二、创建数据库的时候编码问题

 

在"PHP创建MYSQL数据库与数据表常用命令和数据类型设定"文章中,老蒋采用的是SQL直接导入的方式,我们在添加数据库字段的时候,如果我们是需要全部保持UTF-8编码的时候,我们需要在最后"CHARSET=utf8",这里保持数据库字段的UTF8。

 

第三、数据库链接的编码问题

 

在数据库链接文件处,我们需要设置:

 

mysql_query("set names 'utf8'");

 

同样的是UTF8编码设置。

 

这样,通过3处的统一编码,我们在提交数据之后,乱码问题肯定是可以解决的。

s

本文章来为各位介绍一篇关于ZBLOG PHP调用随机文章、热门文章、热评文章的例子,希望这篇教程能够为各位同学带来帮助的哦.
使用方法:

 

第一、在我们的主题目录中需要创建include.php文件,如果有就直接添加脚本

 

 代码如下 复制代码

/**
* 获取文章列表
* @param int $count 数量
* @param null $cate 分类ID
* @param null $auth 用户ID
* @param null $date 日期
* @param null $tags 标签
* @param null $search 搜索关键词
* @param null $order 排序
* @param null $option
* @return array|mixed
*/
function TcgetList($count = 10, $cate = null, $auth = null, $date = null, $tags = null, $search = null, $option = null,$order=null) {
global $zbp;

if (!is_array($option)) {
$option = array();
}

if (!isset($option['only_ontop']))
$option['only_ontop'] = false;
if (!isset($option['only_not_ontop']))
$option['only_not_ontop'] = false;
if (!isset($option['has_subcate']))
$option['has_subcate'] = false;
if (!isset($option['is_related']))
$option['is_related'] = false;

if ($option['is_related']) {
$at = $zbp->GetPostByID($option['is_related']);
$tags = $at->Tags;
if (!$tags)
return array();
$count = $count + 1;
}

if ($option['only_ontop'] == true) {
$w[] = array('=', 'log_IsTop', 0);
} elseif ($option['only_not_ontop'] == true) {
$w[] = array('=', 'log_IsTop', 1);
}

$w = array();
$w[] = array('=', 'log_Status', 0);

$articles = array();

if (!is_null($cate)) {
$category = new Category;
$category = $zbp->GetCategoryByID($cate);

if ($category->ID > 0) {

if (!$option['has_subcate']) {
$w[] = array('=', 'log_CateID', $category->ID);
} else {
$arysubcate = array();
$arysubcate[] = array('log_CateID', $category->ID);
foreach ($zbp->categorys[$category->ID]->SubCategorys as $subcate) {
$arysubcate[] = array('log_CateID', $subcate->ID);
}
$w[] = array('array', $arysubcate);

}

}
}

if (!is_null($auth)) {
$author = new Member;
$author = $zbp->GetMemberByID($auth);

if ($author->ID > 0) {
$w[] = array('=', 'log_AuthorID', $author->ID);
}
}

if (!is_null($date)) {
$datetime = strtotime($date);
if ($datetime) {
$datetitle = str_replace(array('%y%', '%m%'), array(date('Y', $datetime), date('n', $datetime)), $zbp->lang['msg']['year_month']);
$w[] = array('BETWEEN', 'log_PostTime', $datetime, strtotime('+1 month', $datetime));
}
}

if (!is_null($tags)) {
$tag = new Tag;
if (is_array($tags)) {
$ta = array();
foreach ($tags as $t) {
$ta[] = array('log_Tag', '%{' . $t->ID . '}%');
}
$w[] = array('array_like', $ta);
unset($ta);
} else {
if (is_int($tags)) {
$tag = $zbp->GetTagByID($tags);
} else {
$tag = $zbp->GetTagByAliasOrName($tags);
}
if ($tag->ID > 0) {
$w[] = array('LIKE', 'log_Tag', '%{' . $tag->ID . '}%');
}
}
}

if (is_string($search)) {
$search=trim($search);
if ($search!=='') {
$w[] = array('search', 'log_Content', 'log_Intro', 'log_Title', $search);
}
}

if(!empty($order)){
if($order=='new'){
$order = array('log_PostTime'=>'DESC');
}
if($order=='hot'){
$order = array('log_ViewNums'=>'DESC');
}
if($order=='comm'){
$order = array('log_CommNums'=>'DESC');
}
if($order=='rand'){
$order = array('rand()'=>' ');
}
}

$articles = $zbp->GetArticleList('*', $w, $order, $count, null, false);

if ($option['is_related']) {
foreach ($articles as $k => $a) {
if ($a->ID == $option['is_related'])
unset($articles[$k]);
}
if (count($articles) == $count){
array_pop($articles);
}
}

return $articles;

}

 

然后就是在我们需要的界面模板中调用。

 

A - 随机文章

 

 代码如下 复制代码

{$array=TcgetList(10,null,null,null,null,null,null,'rand');}
<ul id="related">
{foreach $array as $related}
<li><span class="time">{$related.Time('m-d')}</span><span class="title"><a href="{$related.Url}" title="{$related.Title}">{$related.Title}</a></span></li>
{/foreach}
</ul>

 

随机10篇文章

 

B - 热门文章

 

 代码如下 复制代码

{$array=TcgetList(10,null,null,null,null,null,null,'hot');}
<ul id="related">
{foreach $array as $related}
<li><span class="time">{$related.Time('m-d')}</span><span class="title"><a href="{$related.Url}" title="{$related.Title}">{$related.Title}</a></span></li>
{/foreach}
</ul>

 

调用10篇热门文章

 

C - 热评文章

 

 代码如下 复制代码

{$array=TcgetList(10,null,null,null,null,null,null,'comm';}
<ul id="related">
{foreach $array as $related}
<li><span class="time">{$related.Time('m-d')}</span><span class="title"><a href="{$related.Url}" title="{$related.Title}">{$related.Title}</a></span></li>
{/foreach}
</ul>

 

调用10篇热评文章。

 

具体的根据我们实际使用调用就可以。
图片添加水印我相信各位朋友都知道的,今天我们来看一段php的图片添加水印例子,希望文章能够帮助到各位朋友.

<?php
    /**
     * 图片添加水印
     * $target 源文件路径
     * $wtrmrk_file 水印图片路径
     * $newcopy 添加水印后的图片路径
     * 
     */
    public function watermark_image($target, $wtrmrk_file, $newcopy) {
        $watermark = imagecreatefrompng($wtrmrk_file);
        imagealphablending($watermark, false);
        imagesavealpha($watermark, true);
        $img = imagecreatefromjpeg($target);
        $img_w = imagesx($img);
        $img_h = imagesy($img);
        $wtrmrk_w = imagesx($watermark);
        $wtrmrk_h = imagesy($watermark);
        $dst_x = ($img_w ) – ($wtrmrk_w); // For centering the watermark on any image
        $dst_y = ($img_h) – ($wtrmrk_h ); // For centering the watermark on any image
        imagecopy($img, $watermark, $dst_x, $dst_y, 0, 0, $wtrmrk_w, $wtrmrk_h);
       
        imagejpeg($img, $newcopy, 100);
        imagedestroy($img);
        imagedestroy($watermark);
        //return $img;
    }
?>

本文章来为各位介绍一篇关于php新浪云平台给图片添加水印方法的例子,希望这篇教程能够帮助到各位使用新浪云平台的朋友.

<?php
//原文件名
$file_name = $_FILES['imgFile']['name'];
//服务器上临时文件名
$tmp_name = $_FILES['imgFile']['tmp_name'];
//获得文件扩展名
$temp_arr = explode(".", $file_name);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);
//新文件名
$new_file_name = date("YmdHis") . '_' . rand(10000, 99999) . '.' . $file_ext;

$water=true;

if(isset($_SERVER['HTTP_APPNAME'])){//sae环境
    $s=new SaeStorage();
    //水印
    if($water){
        $waterpath='./watermark.png';
       
        //新浪云只有SAE_TMP_PATH这个临时目录具有io操作的权限
        $tmp_url = SAE_TMP_PATH.$new_file_name;//保存到sae临时目录
        file_put_contents($tmp_url,file_get_contents($tmp_name));
       
        watermark_image($tmp_url,$waterpath,$tmp_url);
        if(!$s->upload('pic', $new_file_name, $tmp_url)){
            echo '上传文件失败';exit;
        }
    }else{
        if(!$s->upload('pic', $new_file_name, $tmp_name)){
            echo '上传文件失败';exit;
        }
    }

    //添加过水印的图片路径
    $file_url = $s->getUrl('pic', $new_file_name);
}
?>

数组转xml用到不多用数组转json比较多了,但今天有一个功能就是必须要把数组转换成xml了,下面小编人网上找到了一段关于php 数组转xml的代码测试了都可以使用,下面整理分享给各位。

例子1

下面这个可以支持多维数组

测试代码:test.php

<?php
include './ArrayToXML.php';
header('Content-Type:   text/xml');
$data=array("name"=>"zhangsan","sex"=>"0","address"=>array("sheng"=>"chongqing","shi"=>"nanchuan","zhen"=>"daguan"));
echo ArrayToXML::toXml($data);

处理代码:ArrayToXML.php

<?php

class ArrayToXML
{
 /**
  * The main function for converting to an XML document.
  * Pass in a multi dimensional array and this recrusively loops through and builds up an XML document.
  *
  * @param array $data
  * @param string $rootNodeName - what you want the root node to be - defaultsto data.
  * @param SimpleXMLElement $xml - should only be used recursively
  * @return string XML
  */
 public static function toXml($data, $rootNodeName = 'data', $xml=null)
 {
  // turn off compatibility mode as simple xml throws a wobbly if you don't.
  if (ini_get('zend.ze1_compatibility_mode') == 1)
  {
   ini_set ('zend.ze1_compatibility_mode', 0);
  }

  if ($xml == null)
  {
   $xml = simplexml_load_string("<?xml version='1.0' encoding='utf-8'?><$rootNodeName />");
  }

  // loop through the data passed in.
  foreach($data as $key => $value)
  {
   // no numeric keys in our xml please!
   if (is_numeric($key))
   {
    // make string key...
    $key = "unknownNode_". (string) $key;
   }

   // replace anything not alpha numeric
   $key = preg_replace('/[^a-z]/i', '', $key);

   // if there is another array found recrusively call this function
   if (is_array($value))
   {
    $node = $xml->addChild($key);
    // recrusive call.
    ArrayToXML::toXml($value, $rootNodeName, $node);
   }
   else
   {
    // add single node.
    $value = htmlentities($value);
    $xml->addChild($key,$value);
   }

  }
  // pass back as string. or simple xml object if you want!
  return $xml->asXML();
 }
}
ArrayToXML.php来源于网络,本人不做任何解释

例子2

// Xml 转 数组, 包括根键,忽略空元素和属性,尚有重大错误
function xml_to_array( $xml )
{
    $reg = "/<(\\w+)[^>]*?>([\\x00-\\xFF]*?)<\\/\\1>/";
    if(preg_match_all($reg, $xml, $matches))
    {
        $count = count($matches[0]);
        $arr = array();
        for($i = 0; $i < $count; $i++)
        {
            $key= $matches[1][$i];
            $val = xml_to_array( $matches[2][$i] );  // 递归
            if(array_key_exists($key, $arr))
            {
                if(is_array($arr[$key]))
                {
                    if(!array_key_exists(0,$arr[$key]))
                    {
                        $arr[$key] = array($arr[$key]);
                    }
                }else{
                    $arr[$key] = array($arr[$key]);
                }
                $arr[$key][] = $val;
            }else{
                $arr[$key] = $val;
            }
        }
        return $arr;
    }else{
        return $xml;
    }
}

// Xml 转 数组, 不包括根键
function xmltoarray( $xml )
{
    $arr = xml_to_array($xml);
    $key = array_keys($arr);
    return $arr[$key[0]];
}

代码
// 类似 XPATH 的数组选择器
function xml_array_select( $arr, $arrpath )
{
    $arrpath = trim( $arrpath, '/' );
    if(!$arrpath) return $arr;
    $self = 'xml_array_select';
   
    $pos = strpos( $arrpath, '/' );
    $pos = $pos ? $pos : strlen($arrpath);
    $curpath = substr($arrpath, 0, $pos);
    $next = substr($arrpath, $pos);
   
    if(preg_match("/\\[(\\d+)\\]$/",$curpath,$predicate))
    {
        $curpath = substr($curpath, 0, strpos($curpath,"[{$predicate[1]}]"));
        $result = $arr[$curpath][$predicate[1]];
    }else $result = $arr[$curpath];
   
    if( is_array($arr) && !array_key_exists($curpath, $arr) )
    {
        die( 'key is not exists:' . $curpath );
    }
   
    return $self($result, $next);
}

// 如果输入的数组是全数字键,则将元素值依次传输到 $callback, 否则将自身传输给$callback
function xml_array_each( $arr, $callback )
{
    if(func_num_args()<2) die('parameters error');
    if(!is_array($arr)) die('parameter 1 shuld be an array!');
    if(!is_callable($callback)) die('parameter 2 shuld be an function!');
    $keys = array_keys($arr);
    $isok = true;
    foreach( $keys as $key ) {if(!is_int($key)) {$isok = false; break;}}
    if($isok)
        foreach( $arr as $val ) $result[] = $callback($val);
    else
        $result[] = $callback( $arr );
    return $result;
}

/**
 * 最简单的XML转数组
 * @param string $xmlstring XML字符串
 * @return array XML数组
 */
function simplest_xml_to_array($xmlstring) {
    return json_decode(json_encode((array) simplexml_load_string($xmlstring)), true);
}

[!--infotagslink--]

相关文章

  • js URLdecode()与urlencode方法支持中文解码

    下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。 代码如下 复制代码 ...2016-09-20
  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Intellij IDEA连接Navicat数据库的方法

    这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
  • 在数据库里将毫秒转换成date格式的方法

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 如何解决局域网内mysql数据库连接慢

    通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
  • MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
  • Mysql数据库错误代码中文详细说明

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
  • 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24
  • C#读取中文文件出现乱码的解决方法

    这篇文章主要介绍了C#读取中文文件出现乱码的解决方法,涉及C#中文编码的操作技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • c#异步读取数据库与异步更新ui的代码实现

    这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
  • Mysql在debian系统中不能插入中文的终极解决方案

    在debian环境下,彻底解决mysql无法插入和显示中文的问题Linux下Mysql插入中文显示乱码解决方案mysql -uroot -p 回车输入密码进入mysql查看状态如下:默认的是客户端和服务器都用了latin1,所以会乱码。解决方案:mysql>use...2013-10-04
  • Windows服务器MySQL中文乱码的解决方法

    我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
  • Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作。 User::find()->all(); //返回所有用户数据; User::findOne($id); //返回 主键...2015-11-24
  • linux mint 下mysql中文支持问题

    一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
  • MYSQL数据库使用UTF-8中文编码乱码的解决办法

    1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将“整理”设置为:“utf8_general_ci” 或执行语句: 复制代码 代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 创...2015-10-21