php 连接mssql nvarchar和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. ; Valid range 0 - 2147483647. Default = 4096. ; Valid range 0 - 2147483647. Default = 4096. ; Valid range 0 - 2147483647. Default = 4096. ; Maximum size of POST data that PHP will accept. |
需要根据实际情况设置。
文章简单的介绍了从数据库连接到把用户提交的数据保存到mysql数据库的整个过程,一一讲解了操作方法,有需要的朋友看看下面五步。1. 创建一个数据库连接
2. 发送一些不是必须的语句
3. 选择一个存储的数据库
4. 编写数据库插入语句
5. 发送这个语句
先看数据结构
代码如下 | 复制代码 |
-------------------------------------- -- CREATE TABLE IF NOT EXISTS `guest` ( --
-- CREATE TABLE IF NOT EXISTS `post` ( --
|
详细的分析也就这么五个步骤了,那么我们开始第一步吧,利用PHP提供的内置函数mysql_connect来创建一个数据库链接,这个函数需要三个参数,格式如下:
Mysql_connect(‘数据库所在的主机’,’链接数据库的用户名’,’链接数据库的密码’)。这个函数返回一个数据库连接资源号。
看我们在post.php中的链接代码:
代码如下 | 复制代码 |
$con=mysql_connect('localhost','root','root') or die('链接数据库失败!'); |
第一行创建一个数据库连接,把资源号赋给变量$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')"; |
在这个片段的第一行中我们组建了一个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表中 |
代码如下 | 复制代码 |
<?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);//取出一定数量的数据 |
代码如下 | 复制代码 |
<?php /*构造函数*/ /*数据库连接*/ if (!mysql_select_db($this->db_database, $this->conn)) { /*数据库执行语句,可执行查询添加修改删除等任何sql语句*/ $result = mysql_query($this->sql, $this->conn); if (!$result) { /*创建添加新的数据库*/ /*查询服务器所有数据库*/ //以数组形式返回主机中所有数据库名 /*查询数据库下所有的表*/ /* /*取得结果数据*/ /*取得记录集,获取数组-索引和关联,使用$row['content'] */ public function fetch_array() { // public function fetch_array($query) { //获取关联数组,使用$row['字段名'] //获取数字索引数组,使用$row[0],$row[1],$row[2] //获取对象数组,使用$row->content //简化查询select //简化查询select //简化删除del //简化插入insert //简化修改update /*取得上一步 INSERT 操作产生的 ID*/ //指向确定的一条数据记录 // 根据select查询结果计算结果集条数 // 根据insert,update,delete执行结果取得影响行数 //输出显示sql语句 $server_date = date("Y-m-d"); //建立文件夹 //建立txt日期文件 //echo "建立日期文件"; //首先要确定文件存在并且可写 //将$somecontent写入到我们打开的文件中。 //echo "文件 $filename 写入成功"; echo "——错误记录被保存!"; //关闭文件 } else { //将$somecontent写入到我们打开的文件中。 //echo "文件 $filename 写入成功"; //关闭文件 } echo "<br />"; //释放结果集 //数据库选择 //查询字段数量 //取得 MySQL 服务器信息 case 2 : case 3 : case 4 : default : //析构函数,自动关闭数据库,垃圾回收机制 /*获得客户端真实的IP地址*/ } |
代码如下 | 复制代码 |
<?php function daddslashes($string, $force = 0) { |
防注入二
代码如下 | 复制代码 |
function inject_check($sql_str) { //防止注入 |
相关文章
PHP session_start()很慢问题分析与解决办法
本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考。 最近在做东西的时候发现一个问题 有一个接口挂...2016-11-25php中json_decode()和json_encode()用法与中文不显示解决办法
本文章介绍了关于php中json_decode()和json_encode()用法与中文不显示解决办法,有需要的朋友可以参考一下下。 php中json_decode()和json_encode() 1.json_decode(...2016-11-25- 在php中我们如果要导入excel数据我们通常会使用phpexcel插件了,但是有朋友会发与使用phpexcel导出数据出现身份证后四位是0000情况了,下面我们就来看解决办法。 最...2016-11-25
- 401是HTTP状态码的一种,属于“请示错误”,表示请求可能出错,已妨碍了服务器对请求的处理。具体的401错误是指:未授权,请求要求进行身份验证。登录后,服务器可能会返回对页面...2017-01-22
- Apache status 503 的原因大致有如下几种情况 : 1、 CPU 负载过高,服务器响应不过来,返回503 2、 系统连接数超限,超过MaxVhostClients的上限,返回503 3、 单IP连接数超限,超过M...2016-01-28
- 今天用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访问速度慢的解决办法。1、修改mysql数据库链接地址为ip地址127.0.0.1。2、使用最新版本,这个坑了我好久时间。下面一段内容是关于phpstudy启动失败的解决办法。php5.3、5.4和apache都是用vc9编...2015-11-24
- 自己用的小PHP应用,使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google baidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果...2014-05-31
深入研究mysql中的varchar和limit(容易被忽略的知识)
为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql中遇到的一些commen sense类型的问题。 ...2015-03-15- 分享给大家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- 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开发者几乎都会有碰到过,我们下面主要是介绍了php文件乱码和页面乱码。PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码问题...2015-10-21
- 1.前言 昨天碰到一道关于如何解决有序数组的连接问题,这是一个很常见的问题。但是这里要考虑到代码的效率问题,因为要连接的数组都是有序的,这是一个非常重要的前提条件。2.简单但效率不高的算法 我首先想到的是使用...2013-10-04
- 下面来给各位简单的介绍一下关于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)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
- A789使用过程中,一般有两种途径满足上网的需求,一是通过手机卡上网,一是通过周边存在的无线网络上网。不论上网的速度、还是从需求的费用看,通过无线网络上网都具有绝对的...2016-09-20
- 这篇文章主要为大家详细介绍了MySQL远程连接不上的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-26