一个PDO事务实例,PHP中截取普通话乱码化解办法

  1. 在采取jquery easyui
    datagrid时,展现数据,恐怕用户并未有权限产品,那么大家能够利用类似:

    $return = array(“total”=>0,”rows”=>array(),”message”=>’对不起,你没有权限.’,”success”=>false); $this->ajaxReturn($return);

在新余imagemagic时 须求用到 exec相当多服务器上安装退步

最简的正是接纳

复制代码 代码如下:

 

exec()推行外界命令失利,但未有任何错误音讯。 

例子 1

<?php
/*
* 作者:胡睿
* 日期:2011/03/19
* 电邮:hooray0905@foxmail.com
*
* 20110319
*
常用数据库操作,如:增加和删除改查,获取单条记录、多条记下,再次来到最新一条插入记录id,重返操作记录行数等
* 20110630
* 全部修改章程,合併一些参数
* 规范代码,二个艺术里只有1个return语句
*/
/*
参数表明
int $debug 是或不是展开调节和测量检验,开启则输出sql语句
int $mode 0 重回数组
1 重临单条记录
2 重临行数
string $table 数据库表
string $田野先生s 供给查询的数据库字段,允许为空,私下认可为搜索全部
string $sqlwhere 查询条件,允许为空
string $orderby 排序,允许为空,默以为id倒序
*/
function hrSelect($debug, $mode, $table, $fields=”*”, $sqlwhere=””,
$orderby=”id desc”){
global $pdo;
if($debug){
if($mode == 2){
echo “select count(*) from $table where 1=1 $sqlwhere order by
$orderby”;
}elseif($mode == 1){
echo “select $fields from $table where 1=1 $sqlwhere”;
}else{
echo “select $fields from $table where 1=1 $sqlwhere order by
$orderby”;
}
exit;
}else{
if($mode == 2){
$rs = $pdo->query(“select count(*) from $table where 1=1 $sqlwhere
order by $orderby”);
$return = $rs->fetchColumn();
}elseif($mode == 1){
$rs = $pdo->query(“select $fields from $table where 1=1
$sqlwhere”);
$return = $rs->fetch();
}else{
$rs = $pdo->query(“select $fields from $table where 1=1 $sqlwhere
order by $orderby”);
$return = $rs->fetchAll();
}
return $return;
}
}
/*
参数表达
int $debug 是或不是张开调节和测试,开启则输出sql语句
int $mode 0 暗中认可insert,无重返消息
1 重回实行条目款项数
2 重返最终二次插入记录的id
string $table 数据库表
string $田野s 必要插入数据库的字段
string $values 供给插入数据库的音信,必须与$田野(field)s一一对应
*/
function hrInsert($debug, $mode, $table, $fields, $values){
global $pdo;
if($debug){
echo “insert into $table ($fields) values ($values)”;
exit;
}else{
if($mode == 2){
$return = $pdo->lastInsertId(“insert into $table ($fields) values
($values)”);
}elseif($mode == 1){
$return = $pdo->exec(“insert into $table ($fields) values
($values)”);
}else{
$pdo->query(“insert into $table ($fields) values ($values)”);
exit;
}
return $return;
}
}
/*
参数表明
int $debug 是不是展开调节和测量检验,开启则输出sql语句
int $mode 0 暗许update,无重返音信
一个PDO事务实例,PHP中截取普通话乱码化解办法。1 重返实施条目款项数
string $table 数据库表
string $set 供给更新的字段及内容,格式:a=’abc’,b=2,c=’2009-10-10
10:10:10′
string $sqlwhere 修改标准,允许为空
*/
function hrUpdate($debug, $mode, $table, $set, $sqlwhere=””){
global $pdo;
if($debug){
echo “update $table set $set where 1=1 $sqlwhere”;
exit;
}else{
if($mode==1){
$return = $pdo->exec(“update $table set $set where 1=1 $sqlwhere”);
}else{
$pdo->query(“update $table set $set where 1=1 $sqlwhere”);
exit;
}
return $return;
}
}
/*
参数表达
int $debug 是或不是张开调节和测验,开启则输出sql语句
int $mode 0 暗中认可delete,无重临消息
1 重回实行条约数
string $table 数据库表
string $sqlwhere 删除条件,允许为空
*/
function hrDelete($debug, $mode, $table, $sqlwhere=””){
global $pdo;
if($debug){
echo “delete from $table where 1=1 $sqlwhere”;
exit;
}else{
if($mode == 1){
$return = $pdo->exec(“delete from $table where 1=1 $sqlwhere”);
}else{
$pdo->query(“delete from $table where 1=1 $sqlwhere”);
exit;
}
return $return;
}
}
?>

格式的代码重临数据,在datargid的onLoadSuccess方法获得再次来到的多寡,如:

 

 代码如下

除此以外一段代码是依照自个儿那么些数据库操作类的事务实例:

onLoadSuccess:function(data){      if(data.total == 0 && data.message )      {
        //提示框          $.messager.show({            title:commonLang.Message.message,            width:300,            msg:data.message,            timeout:6000,            showType:'slide',            style:{               right:'',
             top:document.body.scrollTop+document.documentElement.scrollTop,               bottom:''            }      });      }  }

exec试行某吩咐在指令行下没不寻常,可是在PHP中就出错。这几个主题素材99.99%与权力有关,可是exec试行的授命不会回来错误。三个本事便是使用管道命令,假若你的exec调用如下:

<?php
echo substr(“Hello world!”,6);
?>输出:

复制代码 代码如下:

 

  1. exec(‘convert a.jpg b.jpg’, $output, $return_val);
     

world!

/*
细心,数据库操作表类型必须为InnoDB,其余品种不援救专门的学问
PDO事务机制
$pdo->beginTransaction(); –开启事务
$pdo->commit(); –停止职业
$pdo->rollBack(); –回滚操作


能够退换如下:

例子 2
<?php
echo substr(“Hello world!”,6,5);
?>

演示,用try/catch包住db操作,当职行业内部的db操作出现抛锚,则实施回滚并抛出极度音信。
*/
try{
$pdo->beginTransaction();
hrInsert(0,1,”class”,”name,parentid”,”‘god’,0″); //能够健康实施
hrInsert(0,0,0,”tb_searchlog”,”userid,code”,”4″); //出错
$pdo->commit();
}catch(Exception $e){
$pdo->rollBack();
echo “Failed: ” . $e->getMessage();
}

  1. exec(‘convert a.jpg b.jpg 2>&1’, $output, $return_val);    
  2. print_r($output);  

韩语的话没分外,然而汉语就出标题了,上面大家接纳mb_substr函数管理。

代码下载:点击下载

选用 2>&1, 命令就能输出shell实施时的荒谬到$output变量,
输出该变量就能够深入分析。

/**
*—————————————————————————————————————–
*PHP有三个mbstring扩充库能够用(有对象面试PHP的时候还被问到过那个难题啊),可是 
*
一般的服务器都没展开php_mbstring.dll,需要在
*php.ini里把php_mbstring.dll打开,若无权力的话就只有联系你的ISP了。
*因为mb_string的效能高级中学一年级些,所以大家先检查一下mb_string是不是能够用:
*—————————————————————————————————————–
*/

你或者感兴趣的文章:

  • php的PDO事务管理体制实例解析
  • PHP中PDO的事务管理剖析
  • php下pdo的mysql事务管理用法实例
  • php中在PDO中使用专业(Transaction)
  • php通过PHPExcel导入Excel表格到MySQL数据库的简易实例
  • thinkPHP导出csv文件及用表格输出excel的艺术
  • php导出word文书档案与excel钟表格的简短示例代码
  • PHP处理excel
    cvs表格的章程实例介绍
  • PHP5中央银行使PDO连接数据库的格局
  • PHP PDO函数库详解
  • Php中用PDO查询Mysql来防止SQL注入风险的办法
  • 斩新的PDO数据库操作类php版(仅适用Mysql)
  • php使用PDO事务同盟表格读取大批量数量插入操作达成格局

 

 代码如下

备注:
exec有3个参数,第三个是要实施的命令,第二个是参数是三个数组,数组的值是由第一个指令推行后生成的,第多少个参数试行的状态,0代表成功,别的都表示失利。

if(function_exists(‘mb_string’))
{
mb_substr($string,$start,$length,$encoding);
//other codes here
}
else mysubstr($string,$start,$length);// 调用自个儿的函数
?>

在php个中一共有四个函数能够用来实践外界命令system,exec,passthru。

先是定义自身的函数

转自  

 代码如下

更加的多精粹博文请到言会咸的博客

<?php
/**
*———————————-
*第一定义本身的函数:
*———————————-
*/
function mysubstr($string, $start, $length)
{
if(strlen($string)>$length)
{
$str=”;
$len=$start+$length;
for($i=$start;$i<$len;$i++)
{
if(ord(substr($string,$i,1))>0xa0)
{
$str.=substr($string,$i,2);
$i++;
}
else{ $str.=substr($string,$i,1);}
}
return $str.’…’;
}
else{ return $string;}
}

网址:

 

还应该有贰个标题要小心,使用这种艺术的时候,你的<head>标签对里的charset唯有设成人中学文的编码才方可,如GBK,GB2312。

上边本身常用的叁其中俄语字符截取函数

自定义截取中文字符串函数,基本上正是模拟mb_substr写个函数,直接调用罢了,以下为自家找到的代码,其实很简短

 代码如下

<?php 
function  substr_cn($string_input,$start,$length)
{
    /* 功能:
     * 此算法用于截取粤语字符串
     *
函数以单个完整字符为单位开始展览截取,即贰个德文字符和三个汉语字符均表示叁个单位长度
     * 参数:
     * 参数$string为要截取的字符串,
     * 参数$start为欲截取的苗头地点,
     * 参数$length为要截取的字符个数(二个汉字或斯洛伐克语字符都算三个)
     * 返回值:
     *美高梅开户网址 , 再次回到截取结果字符串
     * */
    $str_input=$string_input;
    $len=$length;
    $return_str=””;
    //定义空字符串
    for ($i=0;$i<2*$len+2;$i++)
        $return_str=$return_str.” “;
    $start_index=0;
    //总计开首字节偏移量
    for ($i=0;$i<$start;$i++)
    {
        if (ord($str_input{$start_index}>=161))         
//是汉语     
        {
            $start_index+=2;
        }
        else                                          //是英文
        {
            $start_index+=1;
        }        
    }    
    $chr_index=$start_index;
    //截取
    for ($i=0;$i<$len;$i++)
    {
        $asc=ord($str_input{$chr_index});
        if ($asc>=161)
        {
            $return_str{$i}=chr($asc);
            $return_str{$i+1}=chr(ord($str_input{$chr_index+1}));
            $len+=1; //结束条件加1
            $i++;    //地方偏移量加1
            $chr_index+=2;
            continue;            
        }
        else 
        {
            $return_str{$i}=chr($asc);
            $chr_index+=1;
        }
    }    
    return trim($return_str);
}//end of substr_cn
?>

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图