php的SQL连接操作的方法

初学php,于是一开始就在sql(具体点说是mysql)里受挫严重。于是这里记下一些方法。

首先是基本方法。基本方法现在我不用了,所以我就附一下hustoj中的部分吧

基本方法的数据库连接操作:

	if($OJ_SAE)	{//  for sae.sina.com.cn
		mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
		$DB_NAME=SAE_MYSQL_DB;
	}else{
		//for normal install
		if(!mysql_pconnect($DB_HOST,$DB_USER,$DB_PASS)) 
			die('Could not connect: ' . mysql_error());
	}
	// use db
	mysql_query("set names utf8");
	
	if(!mysql_select_db($DB_NAME))
		die('Can\'t use foo : ' . mysql_error());

顺带一提,我是通过阅读hustoj的代码入门的php,感谢hustoj这个开源项目。但是我依然想吐槽一下,hustoj的前台代码太烂了。。

这是使用PDO方法操作sql之前的初始化操作。(因为要在SAE上跑所以写了两个)

	//db init
	if ($ON_SAE) {
		$pdo = new PDO('mysql:host='.SAE_MYSQL_HOST_M.';port='.SAE_MYSQL_PORT.';dbname='.SAE_MYSQL_DB, SAE_MYSQL_USER, SAE_MYSQL_PASS);
		$pdo->query("set names utf8;");
	} else {
		$pdo = new PDO("mysql:host=localhost;dbname=test","root","root");
		$pdo->query("set names utf8;");
	}

PDO的好处在于防注入的东西。但是也需要一些特别的方法,下面会提及,接下来是操作数据库的例子。

常规方法(依然摘自hustoj的部分代码):

	$sql="SELECT * FROM `mail` WHERE `mail_id`=".$vid." and to_user='".$_SESSION['user_id']."'";
	$result=mysql_query($sql);
	$row=mysql_fetch_object($result);

处理得到的结果的方式很多样,根据需求实现就是了,这里不再阐述。

同样的部分,换做PDO写法则为:

	$sql=$pdo->prepare("SELECT * FROM `tb_mail` WHERE `mail_id`=".$vid." and to_user='".$_SESSION['UID']."'");
	$sql->execute();
	$result=$sql->fetchAll();//$result[0]['content']


PDO取得的结果的处理方式也很多样,根据需要实现即可。

PDO的好处在于某些时候可以更方便的防止注入等使得数据库接入更安全,方法类似下面这样:


上图是常规做法(不小心插进去水印了= =)。

这个是应该改为的做法。

数据库的php接入和操作大致如此,如上仅供参考。如果有新科技的话我会补充进来,如果有错误还请评论指正。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值