标签归档:php_mysql

mysql数据表之间数据相互传递的问题

mysql数据表之间数据相互传递的问题

近日,某操作需要从一个表(表A)读取一些数据,然后直接写入另外一个表(表B)(相当于一个备份)
平时没啥问题,某天测试MM将一些乱七八糟的数据写入后就出问题了,这些数据从页面提交到表A时没有问题,
但是从表A读取后写入表B确实有问题,将错误的SQL输出,发现其中包含单引号等一些在SQL中特殊的字符,
此时,需要将这些数据过滤,简单处理:使用addslashes函数,

string addslashes ( string str )

返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(’)、双引号(”)、反斜线(\)与 NUL(NULL 字符)。

在官方手册中也有提到使用这个函数作为数据写入数据库的一个示例

结论:写入数据表之前需要将所有的数据过滤,以防SQL注入或其它特殊字符的写入错误!

另外,addslashes对于防止SQL注入有一些用处,但是对于引号,可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会被看作是单引号,所以addslashes此时无法防止SQL注入。此函数的用于单字节字符串的处理会比较有用。然而多字节字符还是用mysql_real_escape_string好些。

Windows下PHP环境配置的问题

         自从Windows7发布测试版后,一直作为小白鼠在用着,界面和用户体验都不错,但是一段时间后发现使用Xampp搭建的PHP环境运行起来暴慢,今天终于不能再忍受了,于是把Xampp给卸载了,使用手工安装的环境,但是“涛声依旧”。Google了一上,说是32位机与64位的问题,貌似系统是32的w7,奇怪了!

        最后不得已,重新安装了XP,手动安装PHP环境,但是在安装的过程中出现了如下几个问题:

        1、  关于短符号,即是否允许使用<? ?>,在现在使用的模块类中,生成的代码是以短符号包含PHP代码的,导致无法加载文件。

        2、  关于扩展地址,即extension_dir,默认情况下是”./”,这个是必须要改的。

        3、  php_mysql.dll扩展,在扩展地址和apache配置安装完成后,可以运行PHP了,但是发现在apache的错误日志显示PHP Warning:  PHP Startup: Unable to load dynamic library ‘D:/work/php/ext/php_mysql.dll,在phpinfo()显示的扩展中并没有mysql,google下发现是某些扩展需要一些在system32中添加动态链接库,mysql和mysqli在PHP >= 5.0.0 需要 libmysql.dll

        4、  与3类似,显示PHP Warning:  PHP Startup: Unable to load dynamic library ‘D:/work/php/ext/php_curl.dll’ 。curl函数库需要libeay32.dll,ssleay32.dll,解决方法:把php目录下的这两个文件拷贝到system32下即可。其它详细信息请移步Windows 下安装扩展库