星辰之路(三)

1.PDO-1

没记错的话以前好像是用的mysqli连接的数据库,看见去年的培养方案要求PDO

那,学吧

$dsn=’mysql:host=xxxx;dbname=xxxx’;
$user=’xxx’;
$word=’xxx’;
try
{
$db= new PDO($dsn,$user,$word);
}
catch(PDOException $e)
{
die(‘不能连接到数据库 <br / >’.$e);
}

这种就是最常用的写法了

DSN有很多种写法,mysql:这个是数据库类型,除了host和dbname这种参数外,还有port之类的

然后尝试连接,如果失败的话会丢出一个异常

PDO基本方法(基于MySQL)

$values = $db->query(‘SELECT * FROM setting’);

query() 可以用来执行SELECT语句

rowCount() 可以输出查询结果的行数

exec() 可以用来执行UPDATE,DELETE,INSERT语句

quote() 可以用来转义特殊字符

当然,为了安全起见,含有未知参数的都应该使用预处理语句

FetchAll() 方法会输出查询结果的数组,然后我们可以使用foreach来遍历所有查询结果

得到的应该是一个数组的数组

Fetch() 则会返回第一条结果

预处理语句

$statement=$db->prepare(‘SELECT * FROM foods WHERE `name`=? AND  `healthy`=?’);

$statement2=$db->prepare(‘SELECT * FROM foods WHERE `name`=:name AND  `healthy`=:healthy’);

两种方式都是可以的

$statement->bindValue(1,’cake’);

$statement->bindValue(2,true);

$statement2->bindValue(‘:name’,’pie’);

$statement2->bindValue(‘:healthy’,false);

两种方式的区别,在于命名与匿名,命名明显会增加代码可读性,虽然代码有点冗长

$statement->execute();

上一步是绑定值,这一步是执行

当然也可以直接传值

$statement->execute(array(1 => ‘cake’, 2 => true));

$statement2->execute(array(‘:name’=>’pie’,’:healthy’=>false));

这时的$statement就可以和query()方法返回的一样,使用Fetch()了

总结:PDO的基础知识还是很简单的

2.$_SERVER[“PHP_SELF”]与输入检查

$_SERVER[‘PHP_SELF’] 可以返回当前执行脚本的文件名

通常配合表单里的action,提交给自己的表单

当然了,为了防止在url中注入,可以使用htmlspecialchars() 函数

这个函数可以将某些字符转化成HTML实体,从而防止注入

trim() 函数可以去除用户输入数据中不必要的字符 (如:空格,tab,换行)

stripslashes() 函数可以去除用户输入数据中的反斜杠 (\)

教程里说,可以写一个函数使用这三个函数一起对数据进行处理

3.终于跑起来了

之前一直在写代码,并没有上实际环境测试,结果一上就崩盘了

今天重装了VPS之后,跑起来了

发表评论

电子邮件地址不会被公开。 必填项已用*标注