php 连接mssql nvarchar和text被截断解决办法

 更新时间:2016年11月25日 16:37  点击:1733
在php连接mssql 时我突然发现nvarchar被截为255了,后面数据丢失了,而text也被截取了,下面我们查了手册做了如下解决办法

nvarchar被截为255解决办法

PHP 将 nvarchar 按照 MySQL 的 varchar 处理了吧!本文给出了解决方法:

 代码如下 复制代码
select cast(目标字段 as text) from 表名

假如你的 article 表中有个字段 summary 为 nvarchar,那么命令为:

 代码如下 复制代码

select cast(summary as text) from article


另一种情况text被截段解决办法

PHP 的配置文件 php.ini 中 MSSQL 部分:

[MSSQL]

 代码如下 复制代码

; Valid range 0 - 2147483647.  Default = 4096.
mssql.textlimit = 4096

; Valid range 0 - 2147483647.  Default = 4096.
mssql.textsize = 4096
请看这两个配置参数:

; Valid range 0 - 2147483647.  Default = 4096.
mssql.textlimit = 4096

; Valid range 0 - 2147483647.  Default = 4096.
mssql.textsize = 4096
相信你现在已经知道了问题的关键所在,只需要将这两个数值改大即可,不过,同时也要考虑:

; Maximum size of POST data that PHP will accept.
post_max_size = 2M

需要根据实际情况设置。

文章简单的介绍了从数据库连接到把用户提交的数据保存到mysql数据库的整个过程,一一讲解了操作方法,有需要的朋友看看下面五步。

1. 创建一个数据库连接
2. 发送一些不是必须的语句
3. 选择一个存储的数据库
4. 编写数据库插入语句
5. 发送这个语句
先看数据结构

 代码如下 复制代码

--------------------------------------

--
-- 表的结构 `guest`
--

CREATE TABLE IF NOT EXISTS `guest` (
  `id` int(11) NOT NULL auto_increment COMMENT '客户自增id',
  `name` varchar(16) NOT NULL COMMENT '客户名称',
  `email` varchar(60) default NULL COMMENT '电子信箱',
  `qq` varchar(11) default NULL COMMENT 'QQ号码',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

--
-- 导出表中的数据 `guest`
--


-- --------------------------------------------------------

--
-- 表的结构 `post`
--

CREATE TABLE IF NOT EXISTS `post` (
  `id` int(11) NOT NULL auto_increment COMMENT 'post主键',
  `guest_id` varchar(11) NOT NULL COMMENT '发布人id',
  `post` text NOT NULL COMMENT '发布内容',
  `post_time` varchar(14) NOT NULL COMMENT '发布时间',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

--
-- 导出表中的数据 `post`
--


--


详细的分析也就这么五个步骤了,那么我们开始第一步吧,利用PHP提供的内置函数mysql_connect来创建一个数据库链接,这个函数需要三个参数,格式如下:

Mysql_connect(‘数据库所在的主机’,’链接数据库的用户名’,’链接数据库的密码’)。这个函数返回一个数据库连接资源号。

看我们在post.php中的链接代码:

 代码如下 复制代码

 $con=mysql_connect('localhost','root','root') or die('链接数据库失败!');
mysql_query('set names utf8');
mysql_select_db('GuestBook');

第一行创建一个数据库连接,把资源号赋给变量$con,如果连接失败,结束程序的执行输出提示信息“链接数据库失败!”。

第二行发送一个字符集设定语句,让数据在数据库中的出入都使用utf8字符集。这个语句是可有可无的,其中的语句可以写成set names gbk或者set names gb2312等等我们需要的字符集。

第三行利用PHP提供的mysql_select_db函数来选择我们要使用的数据库。

值得注意的是,mysql_query这个函数本身有两个参数:第一个参数就是我们要发送的数据库执行语句sql,第二个参数是数据库连接的资源编号,如果第二个参数没有指定的话,那么程序就会查找最近一个链接资源,也就是说这个参数不是必须的。我们以上包括将来的写法都是没有第二个参数的,按照程序的上下文我们第二行的语句可以写作:
mysql_query(“set names utf8”,$con)这样也是正确的。

这个函数的返回值是布尔型的,如果语句成功执行就返回true否则返回false——了解这一点很重要。

好,到此为止我们的数据库连接已经就绪,开始组装我们的sql插入语句,看一下代码(post.php 第67-76行):

 代码如下 复制代码

 $insertSql="insert into guest (name,qq,email) values ('$name','$qq','$email')";
if(mysql_query($insertSql)){
 $guestid = mysql_insert_id();
}
else{
 echo $insertSql;
 echo mysql_error();
 echo "数据插入失败!";
 exit();
}

在这个片段的第一行中我们组建了一个sql的插入语句,这个看来没什么可说的,唯一点就是把变量写进这些语句并且用引号包裹起来——对于数字型的不需要引号。

第二句发送语句,并判断是否被成功执行。
这个地方需要说明:PHP中if判断中的语句是会被执行的,例如if($c=$a+$b)这样的语句被执行的顺序是,先计算里面的语句然后再对结果作出判断。所以执行之后$c的值是$a,$b之和,判断的时候是对$c作出的判读。

所以在这个地方if判断的是mysql_query($insertSql)的返回结果,语句已经发送到了数据库。

第三行出现的函数mysql_insert_id——获取最近一次插入数据的时候自增序列的值,我们这里获取的是guest表中的id,因为只有这个id才是自增的。以备后用。

这个片段的第五行到最后都是进行的错误处理,如果语句没有被成功执行,那么就执行这些程序,倒数第二行的exit();函数的意思是终止程序向下执行。

这时候我们已经把guest信息保存到了Mysql的GuestBook的guest表中了


看一下post.php文件

 代码如下 复制代码

//把以上插入取得的客户id和留言信息插入到post表中
$post_time = time();
$insertPostSql = "insert into post(guest_id,post,post_time) values('$guestid','$post','$post_time')";
if(mysql_query($insertPostSql)){
 echo <<<tem
 <script>
 alert("留言成功");
 location.href="index.php";
 </script>
tem;
}
else{
 echo <<<tem
 <script>
 alert("留言失败");
 location.href="index.php";
 </script>
tem;
}

分享一篇关于php中缓存Memcache的Queue的用法,Memcache是一种缓存技术,可以提升程序的性能减轻服务器的压力。

 

 代码如下 复制代码
<?php
class MQ{
public static $client;
private static $m_real;
private static $m_front;
private static $m_data = array();
const QUEUE_MAX_NUM = 100000000;
const QUEUE_FRONT_KEY = '_queue_item_front';
const QUEUE_REAL_KEY = '_queue_item_real';
public static function setupMq($conf) {
self::$client = memcache_pconnect($conf);
self::$m_real = memcache_get(self::$client, self::QUEUE_REAL_KEY);
self::$m_front = memcache_get(self::$client, self::QUEUE_FRONT_KEY);
if (!isset(self::$m_real) || emptyempty(self::$m_real)) {
self::$real= 0;
}
if (!isset(self::$m_front) || emptyempty(self::$m_front)) {
self::$m_front = 0;
}
return self::$client;
}
public static function add($queue, $data) {
$result = false;
if (self::$m_real < self::QUEUE_MAX_NUM) {
if (memcache_add(self::$client, $queue.self::$m_real, $data)) {
self::mqRealChange();
$result = true;
}
}
return $result;
}
public static function get($key, $count) {
$num = 0;
for ($i=self::$m_front;$i<self::$m_front + $count;$i++) {
if ($dataTmp = memcache_get(self::$client, $key.$i)) {
self::$m_data[] = $dataTmp;
memcache_delete(self::$client, $key.$i);
$num++;
}
}
if ($num>0) {
self::mqFrontChange($num);
}
return self::$m_data;
}
private static function mqRealChange() {
memcache_add(self::$client, self::QUEUE_REAL_KEY, 0);
self::$m_real = memcache_increment(self::$client, self::QUEUE_REAL_KEY, 1);
}
private static function mqFrontChange($num) {
memcache_add(self::$client, self::QUEUE_FRONT_KEY, 0);
self::$m_front = memcache_increment(self::$client, self::QUEUE_FRONT_KEY, $num);
}
public static function mflush($memcache_obj) {
memcache_flush($memcache_obj);
}
public static function Debug() {
echo 'real:'.self::$m_real."<br>/r/n";
echo 'front:'.self::$m_front."<br>/r/n";
echo 'wait for process data:'.intval(self::$m_real - self::$m_front);
echo "<br>/r/n";
echo '<pre>';
print_r(self::$m_data);
echo '<pre>';
}
}
define('FLUSH_MQ',0);//CLEAN ALL DATA
define('IS_ADD',0);//SET DATA
$mobj = MQ::setupMq('127.0.0.1','11211');
if (FLUSH_MQ) {
MQ::mflush($mobj);
} else {
if (IS_ADD) {
MQ::add('user_sync', '1test');
MQ::add('user_sync', '2test');
MQ::add('user_sync', '3test');
MQ::add('user_sync', '4test');
MQ::add('user_sync', '5test');
MQ::add('user_sync', '6test');
} else {
MQ::get('user_sync', 10);
}
}
MQ::Debug();
?>


好了下面来看看用法

 

 代码如下 复制代码
MQ::setupMq('127.0.0.1','11211');//连接
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ:get($key, 10);//取出一定数量的数据
分享一篇可以记录错误日志的mysql数据库连接类文件,有需要的朋友可以参考一下。
 代码如下 复制代码

<?php
class mysql {
 private $db_host; //数据库主机
 private $db_user; //数据库用户名
 private $db_pwd; //数据库用户名密码
 private $db_database; //数据库名
 private $conn; //数据库连接标识;
 private $result; //执行query命令的结果资源标识
 private $sql; //sql执行语句
 private $row; //返回的条目数
 private $coding; //数据库编码,GBK,UTF8,gb2312
 private $bulletin = true; //是否开启错误记录
 private $show_error = true; //测试阶段,显示所有错误,具有安全隐患,默认关闭
 private $is_error = false; //发现错误是否立即终止,默认true,建议不启用,因为当有问题时用户什么也看不到是很苦恼的

 /*构造函数*/
 public function __construct($db_host, $db_user, $db_pwd, $db_database, $conn, $coding) {
  $this->db_host = $db_host;
  $this->db_user = $db_user;
  $this->db_pwd = $db_pwd;
  $this->db_database = $db_database;
  $this->conn = $conn;
  $this->coding = $coding;
  $this->connect();
 }

 /*数据库连接*/
 public function connect() {
  if ($this->conn == "pconn") {
   //永久链接
   $this->conn = mysql_pconnect($this->db_host, $this->db_user, $this->db_pwd);
  } else {
   //即使链接
   $this->conn = mysql_connect($this->db_host, $this->db_user, $this->db_pwd);
  }

  if (!mysql_select_db($this->db_database, $this->conn)) {
   if ($this->show_error) {
    $this->show_error("数据库不可用:", $this->db_database);
   }
  }
  mysql_query("SET NAMES $this->coding");
 }

 /*数据库执行语句,可执行查询添加修改删除等任何sql语句*/
 public function query($sql) {
  if ($sql == "") {
   $this->show_error("SQL语句错误:", "SQL查询语句为空");
  }
  $this->sql = $sql;

  $result = mysql_query($this->sql, $this->conn);

  if (!$result) {
   //调试中使用,sql语句出错时会自动打印出来
   if ($this->show_error) {
    $this->show_error("错误SQL语句:", $this->sql);
   }
  } else {
   $this->result = $result;
  }
  return $this->result;
 }

 /*创建添加新的数据库*/
 public function create_database($database_name) {
  $database = $database_name;
  $sqlDatabase = 'create database ' . $database;
  $this->query($sqlDatabase);
 }

 /*查询服务器所有数据库*/
 //将系统数据库与用户数据库分开,更直观的显示?
 public function show_databases() {
  $this->query("show databases");
  echo "现有数据库:" . $amount = $this->db_num_rows($rs);
  echo "<br />";
  $i = 1;
  while ($row = $this->fetch_array($rs)) {
   echo "$i $row[Database]";
   echo "<br />";
   $i++;
  }
 }

 //以数组形式返回主机中所有数据库名
 public function databases() {
  $rsPtr = mysql_list_dbs($this->conn);
  $i = 0;
  $cnt = mysql_num_rows($rsPtr);
  while ($i < $cnt) {
   $rs[] = mysql_db_name($rsPtr, $i);
   $i++;
  }
  return $rs;
 }

 /*查询数据库下所有的表*/
 public function show_tables($database_name) {
  $this->query("show tables");
  echo "现有数据库:" . $amount = $this->db_num_rows($rs);
  echo "<br />";
  $i = 1;
  while ($row = $this->fetch_array($rs)) {
   $columnName = "Tables_in_" . $database_name;
   echo "$i $row[$columnName]";
   echo "<br />";
   $i++;
  }
 }

 /*
 mysql_fetch_row()    array  $row[0],$row[1],$row[2]
 mysql_fetch_array()  array  $row[0] 或 $row[id]
 mysql_fetch_assoc()  array  用$row->content 字段大小写敏感
 mysql_fetch_object() object 用$row[id],$row[content] 字段大小写敏感
 */

 /*取得结果数据*/
 public function mysql_result_li() {
  return mysql_result($str);
 }

 /*取得记录集,获取数组-索引和关联,使用$row['content'] */

 public function fetch_array() {
  return mysql_fetch_array($this->result);
 }

// public function fetch_array($query) {
//  return mysql_fetch_array($query);
// }

 //获取关联数组,使用$row['字段名']
 public function fetch_assoc() {
  return mysql_fetch_assoc($this->result);
 }

 //获取数字索引数组,使用$row[0],$row[1],$row[2]
 public function fetch_row() {
  return mysql_fetch_row($this->result);
 }

 //获取对象数组,使用$row->content
 public function fetch_Object() {
  return mysql_fetch_object($this->result);
 }

 //简化查询select
 public function findall($table) {
  $this->query("SELECT * FROM $table");
 }

 //简化查询select
 public function select($table, $columnName = "*", $condition = '', $debug = '') {
  $condition = $condition ? ' Where ' . $condition : NULL;
  if ($debug) {
   echo "SELECT $columnName FROM $table $condition";
  } else {
   $this->query("SELECT $columnName FROM $table $condition");
  }
 }

 //简化删除del
 public function delete($table, $condition, $url = '') {
  if ($this->query("DELETE FROM $table WHERE $condition")) {
   if (!empty ($url))
    $this->Get_admin_msg($url, '删除成功!');
  }
 }

 //简化插入insert
 public function insert($table, $columnName, $value, $url = '') {
  if ($this->query("INSERT INTO $table ($columnName) VALUES ($value)")) {
   if (!empty ($url))
    $this->Get_admin_msg($url, '添加成功!');
  }
 }

 //简化修改update
 public function update($table, $mod_content, $condition, $url = '') {
  //echo "UPDATE $table SET $mod_content WHERE $condition"; exit();
  if ($this->query("UPDATE $table SET $mod_content WHERE $condition")) {
   if (!empty ($url))
    $this->Get_admin_msg($url);
  }
 }

 /*取得上一步 INSERT 操作产生的 ID*/
 public function insert_id() {
  return mysql_insert_id();
 }

 //指向确定的一条数据记录
 public function db_data_seek($id) {
  if ($id > 0) {
   $id = $id -1;
  }
  if (!@ mysql_data_seek($this->result, $id)) {
   $this->show_error("SQL语句有误:", "指定的数据为空");
  }
  return $this->result;
 }

 // 根据select查询结果计算结果集条数
/* public function db_num_rows() {
  if ($this->result == null) {
   if ($this->show_error) {
    $this->show_error("SQL语句错误", "暂时为空,没有任何内容!");
   }
  } else {
   return mysql_num_rows($this->result);
  }
 }*/
 public function db_num_rows($result){
  if($result==null){
  if ($this->show_error) {
    $this->show_error("SQL语句错误", "暂时为空,没有任何内容!");
   }
  }else{
   return mysql_num_rows($result);
  }
 }

 // 根据insert,update,delete执行结果取得影响行数
 public function db_affected_rows() {
  return mysql_affected_rows();
 }

 //输出显示sql语句
 public function show_error($message = "", $sql = "") {
  if (!$sql) {
   echo "<font color='red'>" . $message . "</font>";
   echo "<br />";
  } else {
   echo "<fieldset>";
   echo "<legend>错误信息提示:</legend><br />";
   echo "<div style='font-size:14px; clear:both; font-family:Verdana, Arial, Helvetica, sans-serif;'>";
   echo "<div style='height:20px; background:#000000; border:1px #000000 solid'>";
   echo "<font color='white'>错误号:12142</font>";
   echo "</div><br />";
   echo "错误原因:" . mysql_error() . "<br /><br />";
   echo "<div style='height:20px; background:#FF0000; border:1px #FF0000 solid'>";
   echo "<font color='white'>" . $message . "</font>";
   echo "</div>";
   echo "<font color='red'><pre>" . $sql . "</pre></font>";
   $ip = $this->getip();
   if ($this->bulletin) {
    $time = date("Y-m-d H:i:s");
    $message = $message . "rn$this->sql" . "rn客户IP:$ip" . "rn时间 :$time" . "rnrn";

    $server_date = date("Y-m-d");
    $filename = $server_date . ".txt";
    $file_path = "error/" . $filename;
    $error_content = $message;
    //$error_content="错误的数据库,不可以链接";
    $file = "error"; //设置文件保存目录

    //建立文件夹
    if (!file_exists($file)) {
     if (!mkdir($file, 0777)) {
      //默认的 mode 是 0777,意味着最大可能的访问权
      die("upload files directory does not exist and creation failed");
     }
    }

    //建立txt日期文件
    if (!file_exists($file_path)) {

     //echo "建立日期文件";
     fopen($file_path, "w+");

     //首先要确定文件存在并且可写
     if (is_writable($file_path)) {
      //使用添加模式打开$filename,文件指针将会在文件的开头
      if (!$handle = fopen($file_path, 'a')) {
       echo "不能打开文件 $filename";
       exit;
      }

      //将$somecontent写入到我们打开的文件中。
      if (!fwrite($handle, $error_content)) {
       echo "不能写入到文件 $filename";
       exit;
      }

      //echo "文件 $filename 写入成功";

      echo "——错误记录被保存!";

      //关闭文件
      fclose($handle);
     } else {
      echo "文件 $filename 不可写";
     }

    } else {
     //首先要确定文件存在并且可写
     if (is_writable($file_path)) {
      //使用添加模式打开$filename,文件指针将会在文件的开头
      if (!$handle = fopen($file_path, 'a')) {
       echo "不能打开文件 $filename";
       exit;
      }

      //将$somecontent写入到我们打开的文件中。
      if (!fwrite($handle, $error_content)) {
       echo "不能写入到文件 $filename";
       exit;
      }

      //echo "文件 $filename 写入成功";
      echo "——错误记录被保存!";

      //关闭文件
      fclose($handle);
     } else {
      echo "文件 $filename 不可写";
     }
    }

   }
   echo "<br />";
   if ($this->is_error) {
    exit;
   }
  }
  echo "</div>";
  echo "</fieldset>";

  echo "<br />";
 }

 //释放结果集
 public function free() {
  @ mysql_free_result($this->result);
 }

 //数据库选择
 public function select_db($db_database) {
  return mysql_select_db($db_database);
 }

 //查询字段数量
 public function num_fields($table_name) {
  //return mysql_num_fields($this->result);
  $this->query("select * from $table_name");
  echo "<br />";
  echo "字段数:" . $total = mysql_num_fields($this->result);
  echo "<pre>";
  for ($i = 0; $i < $total; $i++) {
   print_r(mysql_fetch_field($this->result, $i));
  }
  echo "</pre>";
  echo "<br />";
 }

 //取得 MySQL 服务器信息
 public function mysql_server($num = '') {
  switch ($num) {
   case 1 :
    return mysql_get_server_info(); //MySQL 服务器信息
    break;

   case 2 :
    return mysql_get_host_info(); //取得 MySQL 主机信息
    break;

   case 3 :
    return mysql_get_client_info(); //取得 MySQL 客户端信息
    break;

   case 4 :
    return mysql_get_proto_info(); //取得 MySQL 协议信息
    break;

   default :
    return mysql_get_client_info(); //默认取得mysql版本信息
  }
 }

 //析构函数,自动关闭数据库,垃圾回收机制
 public function __destruct() {
  if (!empty ($this->result)) {
   $this->free();
  }
  mysql_close($this->conn);
 } //function __destruct();

 /*获得客户端真实的IP地址*/
 function getip() {
  if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
   $ip = getenv("HTTP_CLIENT_IP");
  } else
   if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
    $ip = getenv("HTTP_X_FORWARDED_FOR");
   } else
    if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
     $ip = getenv("REMOTE_ADDR");
    } else
     if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
      $ip = $_SERVER['REMOTE_ADDR'];
     } else {
      $ip = "unknown";
     }
  return ($ip);
 }
 function inject_check($sql_str) { //防止注入
  $check = eregi('select|insert|update|delete|'|/*|*|../|./|union|into|load_file|outfile', $sql_str);
  if ($check) {
   echo "输入非法注入内容!";
   exit ();
  } else {
   return $sql_str;
  }
 }
 function checkurl() { //检查来路
  if (preg_replace("/https?://([^:/]+).*/i", "\1", $_SERVER['HTTP_REFERER']) !== preg_replace("/([^:]+).*/", "\1", $_SERVER['HTTP_HOST'])) {
   header("Location: http://www.111cn.net");
   exit();
  }
 }
 function htmtocode($content) {
 $content = str_replace("n", "<br>", str_replace(" ", "&nbsp;", $content));
 return $content;
}

}
$db=new mysql("localhost","root","","Messages","","gbk");
?>

关于sql注入是在程序开发中基本的网站安全知识,下面我们讲了php和sql两个防注入的办法,有需要的朋友可以参考一下或自己也可以在这基础上改进。
 代码如下 复制代码

<?php
$magic_quotes_gpc = get_magic_quotes_gpc();
@extract(daddslashes($_COOKIE));
@extract(daddslashes($_POST));
@extract(daddslashes($_GET));
if(!$magic_quotes_gpc) {
$_FILES = daddslashes($_FILES);
}

function daddslashes($string, $force = 0) {
if(!$GLOBALS['magic_quotes_gpc'] || $force) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force);
}
} else {
$string = addslashes($string);
}
}
return $string;
}
?>

防注入二

 代码如下 复制代码

function inject_check($sql_str) { //防止注入
  $check = eregi('select|insert|update|delete|'|/*|*|../|./|union|into|load_file|outfile', $sql_str);
  if ($check) {
   echo "输入非法注入内容!";
   exit ();
  } else {
   return $sql_str;
  }
 }
 function checkurl() { //检查来路
  if (preg_replace("/https?://([^:/]+).*/i", "\1", $_SERVER['HTTP_REFERER']) !== preg_replace("/([^:]+).*/", "\1", $_SERVER['HTTP_HOST'])) {
   header("Location: http://www.111cn.net");
   exit();
  }
 }

[!--infotagslink--]

相关文章

  • PHP session_start()很慢问题分析与解决办法

    本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考。 最近在做东西的时候发现一个问题 有一个接口挂...2016-11-25
  • php中json_decode()和json_encode()用法与中文不显示解决办法

    本文章介绍了关于php中json_decode()和json_encode()用法与中文不显示解决办法,有需要的朋友可以参考一下下。 php中json_decode()和json_encode() 1.json_decode(...2016-11-25
  • phpexcel导出数据身份证后四位0000解决办法

    在php中我们如果要导入excel数据我们通常会使用phpexcel插件了,但是有朋友会发与使用phpexcel导出数据出现身份证后四位是0000情况了,下面我们就来看解决办法。 最...2016-11-25
  • 401错误码代表什么 401错误解决办法

    401是HTTP状态码的一种,属于“请示错误”,表示请求可能出错,已妨碍了服务器对请求的处理。具体的401错误是指:未授权,请求要求进行身份验证。登录后,服务器可能会返回对页面...2017-01-22
  • apache网站提示503错误解决办法

    Apache status 503 的原因大致有如下几种情况 : 1、 CPU 负载过高,服务器响应不过来,返回503 2、 系统连接数超限,超过MaxVhostClients的上限,返回503 3、 单IP连接数超限,超过M...2016-01-28
  • Perl CPAN::Modulelist的解决办法

    今天用CPAN安装Term::ReadLine,报了个这样的错误 Going to read /root/.cpan/sources/modules/03modlist.data.gz Can't locate object method "data" via package "C...2016-11-25
  • phpStudy访问速度慢和启动失败的解决办法

    下面给大家介绍phpstudy访问速度慢的解决办法。1、修改mysql数据库链接地址为ip地址127.0.0.1。2、使用最新版本,这个坑了我好久时间。下面一段内容是关于phpstudy启动失败的解决办法。php5.3、5.4和apache都是用vc9编...2015-11-24
  • PHP Curl出现403错误的解决办法

    自己用的小PHP应用,使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google baidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果...2014-05-31
  • 深入研究mysql中的varchar和limit(容易被忽略的知识)

    为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql中遇到的一些commen sense类型的问题。 ...2015-03-15
  • PHP判断上传文件类型的解决办法

    分享给大家php判断上传文件类型的方法,大家一起学习学习。/** * 读取文件前几个字节 判断文件类型 * @return String */ function checkTitle($filename){ $file=fopen($filename, "rb"); $bin=fread($file, 2); /...2015-10-21
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • MYSQL数据库使用UTF-8中文编码乱码的解决办法

    1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将“整理”设置为:“utf8_general_ci” 或执行语句: 复制代码 代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 创...2015-10-21
  • php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法

    最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。 1.使用 PEAR 的...2015-10-21
  • PHP页面转UTF-8中文编码乱码的解决办法

    对于乱码这个问题php开发者几乎都会有碰到过,我们下面主要是介绍了php文件乱码和页面乱码。PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码问题...2015-10-21
  • js有序数组的连接问题

    1.前言 昨天碰到一道关于如何解决有序数组的连接问题,这是一个很常见的问题。但是这里要考虑到代码的效率问题,因为要连接的数组都是有序的,这是一个非常重要的前提条件。2.简单但效率不高的算法 我首先想到的是使用...2013-10-04
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
  • Ubuntu15下mysql5.6.25不支持中文的解决办法

    apt-get install 安装的,不是源码包安装的mysql1 修改mysql的配置文件/etc/mysql/conf.d/mysql.cnf在[mysql]的下方加入如下语句:(注:这个文件下没有配置,只有【mysql】)no-auto-rehash default-character-set=utf8/etc/...2015-10-21
  • C#连接Oracle数据库字符串(引入DLL)的方式

    这篇文章主要给大家介绍了关于C#连接Oracle数据库字符串(引入DLL)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • A789如何连接无线网络上网

    A789使用过程中,一般有两种途径满足上网的需求,一是通过手机卡上网,一是通过周边存在的无线网络上网。不论上网的速度、还是从需求的费用看,通过无线网络上网都具有绝对的...2016-09-20
  • MySQL远程连接不上的解决方法

    这篇文章主要为大家详细介绍了MySQL远程连接不上的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-26