这是我写的一个数据库的连接类
<?php 
class db {
//连接数据库
    function conn() {
     mysql_connect("localhost","root","123") or die("数据库连接失败!".mysql_error());
     mysql_select_db("guestbook");
    }
    //查询用户名和密码是否匹配
    function sel_info($username,$password){
     $query="select * from guest_info where username='$username' and password='$password'";
     mysql_query("SET NAMES UTF8");
     $sel_info=mysql_query($query) or die("查询失败!".mysql_error());
     return $sel_info;
    }
    //查询留言信息
    function sel_guest(){
     $query="select * from guestbook";
     mysql_query("SET NAMES UTF8");
     $sel_guest=mysql_query($query) or die("查询失败!".mysql_error());
     return $sel_guest;
    }
?>
然后我的老大说mysql_query("SET NAMES UTF8");mysql_query这些都可以写一起,我想问下怎么写一起啊,还有要我把sql语句从类里面拿出来作为一个参数传,这个也不会改,最后调用的时候说我每个页面都要$db=new db;难道不是这样的吗?哪位高手帮下忙啊,跪谢!!

解决方案 »

  1.   

    class db {
        //连接数据库
        function conn() {
            mysql_connect("localhost","root","123") or die("数据库连接失败!".mysql_error());
            mysql_select_db("guestbook");
        }
        //查询用户名和密码是否匹配
        function sel_info($username,$password){
            $query="select * from guest_info where username='$username' and password='$password'";
            mysql_query("SET NAMES UTF8");
            $sel_info=mysql_query($query) or die("查询失败!".mysql_error());
            return $sel_info;
        }
        //查询留言信息
        function sel_guest($query){        mysql_query("SET NAMES UTF8");
            $sel_guest=mysql_query($query) or die("查询失败!".mysql_error());
            return $sel_guest;
        }
      

  2.   


    class db {    
    //连接数据库    function db($host, $user, $pass, $db){
                    mysql_connect($host, $user, $pass) or die("数据库连接失败!".mysql_error());
            mysql_select_db($db);
        }    //查询用户名和密码是否匹配
        function sel_info($username,$password){
            $query="select * from guest_info where username='$username' and password='$password'";
            mysql_query("SET NAMES UTF8");
            $sel_info=mysql_query($query) or die("查询失败!".mysql_error());
            return $sel_info;
        }
        //查询留言信息
        function sel_guest($query){        mysql_query("SET NAMES UTF8");
            $sel_guest=mysql_query($query) or die("查询失败!".mysql_error());
            return $sel_guest;
        }
      

  3.   


    class db {    
    //连接数据库    function db($host, $user, $pass, $db){
                    mysql_connect($host, $user, $pass) or die("数据库连接失败!".mysql_error());
            mysql_select_db($db);       
     mysql_query("SET NAMES UTF8");
        }    //查询用户名和密码是否匹配
        function sel_info($username,$password){
            $query="select * from guest_info where username='$username' and password='$password'";        $sel_info=mysql_query($query) or die("查询失败!".mysql_error());
            return $sel_info;
        }
        //查询留言信息
        function sel_guest($query){
            $sel_guest=mysql_query($query) or die("查询失败!".mysql_error());
            return $sel_guest;
        }
      

  4.   

    可是我的sel_info函数呢?也是
        function sel_info($query){
            $sel_info=mysql_query($query) or die("查询失败!".mysql_error());
            return $sel_info;
        }
    这样吗?
      

  5.   

    也就说只写这么一个函数就可以了,然后把那些不管是查询啊还是插入的sql语句都作为参数传进来是吧
      

  6.   

    建议你数据库链接写到构造函数里面去,新建对象时就直接链接数据库了
    mysql_query("SET NAMES UTF8");这句加到构造函数里去就行了,其他函数就不用写了
    你这程序的话就是加到conn()函数里去用到这个类当然要$db=new db(),要不这代码有什么用?我是个新手,就知道这些了,其他的不懂了~_~
      

  7.   

    $db =new db();
    在类里写单态模式,就不用每次都实例了
      

  8.   

    我老大是说我每页都要$db=new db;一下,还有session_start();这俩句,让我好像是写到一个页面中还是怎么样,大概可以调用的样子,而不是每个页面都写一遍
    mysql_query("SET NAMES UTF8");写到构造函数里面啊,不错的建议,谢了,可是还有问题啊,大家继续啊
      

  9.   

    对于每个查询语句,为了安全,都应该用mysql_real_escape_string函数。
      

  10.   

    我不建议把mysql_query("SET NAMES UTF8");写到构造函数里面,可以写到一个单独的函数如DataBaseInitalize里面来调用比较好。构造函数里尽量不要放有可能产生异常的语句。
      

  11.   

    mysql_connect("localhost","root","123") or die("数据库连接失败!".mysql_error());
    mysql_select_db("guestbook");
    mysql_query("SET NAMES 'UTF8'");//只在这里加就可以了。在网上去下一个mysql类,看人家是怎么写的。
    phpwind和discuz的程序里就有现成的。
      

  12.   

    哦,好的,那个还有就是我每个页面调用的时候都有一句$db=new db;
    这个怎么解决啊?
      

  13.   

    引用  在写程序的时候 一般都会有配置、方法、类、模板类 等文件的引用 可以统一
    放入一个文件进行引用<?php
    require_once("class.db.php");$db = new db();?>然后在其他文件中应用这个文件
      

  14.   

    哦,就是说可以
    <?php
    session_start();
    require_once("class.db.php");
    $db = new db();?>
    可以这样对吧,就不用每个页面都写一回了?