当我们使用传统的 mysql_connect 、mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制。虽然可以用mysql_real_escape_string()函数过滤用户提交的值,但是也有缺陷。而使用PHP的PDO扩展的 prepare 方法,就可以避免 sql injection 风险。
PDO 提供了三种不同的错误处理模式,以满足不同风格的应用开发:
PDO::ERRMODE_SILENT
此为默认模式。 PDO 将只简单地设置错误码,可使用 PDO::errorCode() 和 PDO::errorInfo() 方法来检查语句和数据库对象。如果错误是由于对语句对象的调用而产生的,那么可以调用那个对象的 PDOStatement::errorCode() 或PDOStatement::errorInfo() 方法。如果错误是由于调用数据库对象而产生的,那么可以在数据库对象上调用上述两个方法。
【PDO是啥】
PDO(PHP Data Object)是PHP5新加入的一个重大功能,因为在PHP5以前的PHP4/PHP3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么 php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等扩展来连接MySQL、PostgreSQL、MS SQL Server、SQLite,同样的,我们必须借助 ADOdb、PEAR::DB、PHPlib::DB之类的数据库抽象类来帮助我们,无比烦琐和低效,毕竟,PHP代码的效率怎么能够比我们直接用C/C++写的扩展斜率高捏?所以嘛,PDO的出现是必然的,大家要平静学习的心态去接受使用,也许你会发现能够减少你不少功夫哦。
if (!empty (get_gpc('userId'))) { $userId = get_gpc('userId'); } else { $error = "ID doesn't exist"; }
报错:
Fatal error: Can't use method return value in write context in (line number)
定义和用法
sprintf() 函数把格式化的字符串写入一个变量中。
语法
sprintf(format,arg1,arg2,arg++)
参数 | 描述 |
---|---|
format | 必需。转换格式。 |
arg1 | 必需。规定插到 format 字符串中第一个 % 符号处的参数。 |
arg2 | 可选。规定插到 format 字符串中第二个 % 符号处的参数。 |
arg++ | 可选。规定插到 format 字符串中第三、四等等 % 符号处的参数。 |
封装性是面象对象编程中的三大特性之一,封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义:
1. 把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。
2. 信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外部发生联系。
Mac Pro 电脑编译安装了 PHP 5.6.21,先前的系统运行时报如下警告级错误:
Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead.
意思是 自动变量 $HTTP_RAW_POST_DATA 已过时,将来会被移除,使用 php://input 流方式代替!
addslashes 和 mysql_real_escape_string 都是为了使数据安全的插入到数据库中而进行的过滤,那么这两个函数到底是有什么区别呢?
专访阿里巴巴研究员“赵海平”:Facebook的PHP底层性能优化之路
http://www.infoq.com/cn/articles/interview-alibaba-zhaohaiping
如何计算一段php程序代码的执行消耗时间?
对于系统时间,可能很多同学对php的time()函数并不陌生,可惜time()函数只返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。
没错,是秒。我们一段php程序代码执行耗时可能并不超过一秒,所以time()并不适用。php提供了一个更为精确的时间函数microtime():
microtime — 返回当前 Unix 时间戳和微秒数。
格式: mixed microtime ([ bool $get_as_float ] )