>  기사  >  데이터 베이스  >  mysql字符串转义函数_MySQL

mysql字符串转义函数_MySQL

WBOY
WBOY원래의
2016-06-01 13:44:371279검색

bitsCN.com

在mysql插入数据表,如果数据中带有'/“会造成语法错误,这个不用解释,你懂的,因此需要写个转义函数,一开始想直接用string的replace,但是这个方法要调用3次
放在服务端感觉效率太低了,于是用C写了个,感觉还可以,时间复杂度跟需要转义字符的个数无关,如果源串没有匹配的话不需要copy操作.
//转义函数,‘转成/'
bool ConverToDBStr( const char* src,char*dst )
{
    int i = -1;//记录上次匹配的位置
    int dOffset = 0;//目标字符串游标
    int nCopy = 0;//本次需要成 copy的字节数
    const char*p = src;
    while( *p )
    {
        if( *p=='//'||*p=='/''||*p=='"' )
        {
            nCopy = p-src-i-1;
            memcpy( dst+dOffset,src+i+1,nCopy );
            dOffset+=nCopy;
            *(dst+Offset)='//';
            *(dst+dOffset+1)=*p;
            dOffset+=2;
            i = p-src;
        }
        p++;
    }
    if( dOffset>0 )//有匹配到,copy最后的字符串
    {
        memcpy( dst+dOffset,src+i+1,p-src-i );
        return true;
    }
    return false;

}
可以看到,这个函数稍微改动下就可以实现replace

作者:ifeng

bitsCN.com
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.