第一部份:数据库连接/查询
a.四步曲:
【ChinaByte 教程】1.要根据库中的DB_Sql来编写一个类,这个只需要在你的顶层包含文件中定义好就行了,同一个程序使用时不需要重定义,例子是:
class slashDB extends DB_Sql
{
var $classname="slashDB";
/**** Remember to change the below items to match your db *****/
var $Host = "localhost";
var $Database = "abc";
var $User = "abc";
var $Password = "abc";
function halt($msg){
printf("数据库出现错误!: %s \n", $msg);
printf("MySQL 错误!: %s (%s) \n", $this->Errno, $this->Error);
printf("请联系WebMaster并报告此出错信息得详细内容。\n ");
die("Session 挂起。");
}
}
其中slashDB的名字是任意的,根据编程者的喜好设定,不过都建议用extends语句生成的类的名字 最好都有DB两个字。例如userDB,slashDB。并且$classname要和class
slashDB extends DB_Sql中 slashDB一样!否则类定义出错。其他需要修改的仅仅是类的名字,$classname,$Host,$Database
,$User,$Password等需要修改。函数halt是错误提示。你可以自定义到一个页面。
2.使用编写好的类的时候,用new关键字 $abc = new slashDB; 其中$abc是个变量名,这代表你要使用slashDB类的功能。
3.查询数据库
一般有2个方法,短的查询直接将语句写到函数,长的就先用一个变量分别储存再查询。
a. 短语句:
$abc->query("SELECT * FROM user WHERE username='kk' AND
passwd='kk' ");
注意的是这里是一个调用slash类中的方法query,并且数据库查询语句不能漏了" ",否则出错。
b.长语句
$q = "SELECT username,passwd,email,nation,url,edulev";
$q .= ",seclev FROM user WHERE username='$username' ";
$q .= "AND aid='$aid' ORDER BY ID DESC";
$abc->query($q); //这里才执行查询
采用了短语句合成长语句的方法。其中需要注意的是第一个$q是起始的语句,不能跟“.”号!
接着同名的$q就是需要和第一个$q合成的变量,其实是同一个变量但是分别赋一个长语句的不同 部分。因为为了避免互相覆盖就用“.”号!!切记切记!
另外查询语句中该有空格的必须有空格,即使该行没有,下一行也必须有。例如$q .= ",seclev FROM user
WHERE username='$username' ";句中最后有一个空格如果他没有,而接着的行开头没有的话,数据库查询会出错的。
4.取得结果
$abc->next_record();
这个是一个没有返回值的语句,他只会让Record[];这个方法产生相应的查询 结果。如果没有这句话就不会产生相应的结果。next_record()是将当前指针向前移动并更新Record
、Error、Row、Errno的函数。因此不运行他一定不能够产生你需要的结果。
$temail = $abc->Record["email"];
$turl = $abc->Record["url"];
这几句就是将查询后的结果赋值给指定的变量。
注意:一般如果返回的row超过一行,你就要用习惯方法: while($abc->next_record()) { php代码
} 来进行处理了。这个方法就是便历了所有查询到的结果。
|