Sql注入:就是经过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令php
Eg:登录表单传回帐户名与密码,而后使用sql语句去查询html
$pwd=&_POST[‘pwd’];mysql
$name=$_POST[‘name’];sql
$sql=” select * from login where pwd= ”+$pwd+” and name =”+$name+” ”;数据库
正常这样验证没有问题,可是遇到别人恶意sql注入时;例如别人提交的表单中pwd的值为:‘ or 1=1 ’时;apache
Sql语句变为:select * from login where pwd =。。。 and name = or 1=1 ”;数组
这样sql恒为真,不须要正确的帐号与密码就恶意登录了安全
使用mysqli时可使用预处理语句(相似jdbc):服务器
1. mysqli链接是永久链接,而mysql是非永久链接。app
mysql链接:每当第二次使用的时候,都会从新打开一个新的进程。
mysqli链接:一直都只使用同一个进程。
好处:这样就能够很大程度的减轻服务器压力。
2.mysql_connect与mysql_pconnect与mysqli_connect:
mysql_pconnect打开的链接不会关闭(即便调用mysql_close也不会关闭,由于对其无效),
相似于链接缓冲池,若是下次有来自于同一个机器的同一个用户名
对同一个数据库的链接,php会自动使用上次已经创建的链接,而不须要再从新创建一个。?
好处:是省去了每次与数据库创建链接的开销,
坏处:是须要浪费一些内存,占用一些链接,
因此若是用户访问量大的时候会出现错误,要把mysql的max_connections参数改大一点,?或者使用mysql_connect()就解决问题。
connect与pconnect不会带来功能的差别,?只有性能上的差异.
通常php有俩种运行模式,?一是做为cgi运行,?二是做为apache的模块运行.?
做为cgi的时候connect跟pconnect没什么不一样,?由于每次cgi进行运行结束后都会被销毁清理掉资源
链接与基本使用见data_run
多条语句查询见demo1
返回索引数组关联数组等见PHP.php
见kq代码
pdo扩展page.class.php
PHP.page.class.php