日期:2014-05-16  浏览次数:20403 次

略谈换行符在数据库查询中引起的错误

最近深被php数据库查询困扰。

典型的例子就是,取web页面中某个元素的innerhtml值,虽然通过javascript 可以轻松取出,

但是看不到值里面是否有“\n” 、“\r” 、“\t”、“ ” 等一些空字符。这给数据查询带来了麻烦。

       比如说你要查询的字段值$filed_value="test", 它是一个4个字节长度的字符串。但是在你从web页面

中取出来的是“test\n”,这个“\n”换行符,你其实看不见。这就导致了你从web页面中取出了5个字节大小的

字符串,当你在数据库中查找字段值为”test“的行时,你根本就找不到。mysql_num_rows()的值为0。

       这是该怎么办呢?

可以通过javascript、php去除掉字符串首尾。

       1、php去除字符串$str="\rtest\r\n",可以用函数trim(),即trim($str)

       2、javascript去除字符串str首尾空白字符,一般是通过正则表达式,也可以利用JQuery中的trim函数

1)str.replace(/(^\s*)|(\s*$)/g, ""); 

  2)$.trim(str);


通过以上两个方法怎么检查是否真的去除掉了字符串中的空白字符呢?

大家想的什么方法了呢?不妨分享一下,共同进步。

本人想的的方法是php中的json_encode函数。下图是利用json_encode函数查看字符串中空白字符的效果图。

注意,通过json_encode可以看到”\r“、”\n“、 ”\t“等字符。

测试代码如下:

<?php
    $arr=array("name"=>"svap\n");
    $json=json_encode($arr);
    echo $json;
    echo "\n";
    $arr['name']=trim($arr['name']);
    $json=json_encode($arr);
    echo $json;
 ?>