日期:2014-05-16  浏览次数:20405 次

刚转学php,请大家帮我写段数据库查询类的代码
大家好,本人初转php,想建立一个pdo连接的数据库操作类,但是不知道php的调用方法,请大家指点下。
类文件coon.php内容:

<?php
class my_sql
{
public $dbh;
public $sth;
//连接数据库
public function sql_open()
{
     $host='localhost'; //数据库主机名
     $dbName='lif2';    //使用的数据库
     $user='root';      //数据库连接用户名
     $pass='123456';    //对应的密码
     $dsn='mysql:host='.$host.';dbname='.$dbName;
 try
 {
$dbh = new PDO($dsn, $user, $pass);
$dbh->query("SET NAMES UTF8");
$dbh->exec("SET NAMES UTF8");
}
catch(Exception $e)
    {
    echo 'data error: '.$e->getMessage();
    }
}
//关闭数据库连接
public function sql_close()
{
$dbh=null;
}

//查询数据库
public function my_query($sql)
{
$this->sql_open();
//$this->sth = $this->dbh->query($sql); 
//$result = $this->sth->fetchAll();       
        //return $result;  
          这里面怎么写才能返回数据?
}
}
?>


页面调用代码:


<body>
<?php
include 'conn.php';
$mysql = new my_sql;

foreach ($mysql->my_query('SELECT * FROM user_type order by user_id') as $row)
{
//这里循环输出查询内容
}

$mysql->sql_close();
?>
</body>


望详细指点下,实在弄不明白,用asp或asp.net的函数调用方法全不行,我想写一个查询,插入,更新和删除数据的通用函数,外部只要带入sql语句就可以执行的那种。
------解决方案--------------------
 $this->dbh = new PDO($dsn, $user, $pass);

你的my_query看上去没错,将注释的那几行打开。先试试看。


------解决方案--------------------
你现在这个不能防注入,防注入需要用PDO::prepare


<?php
/* Execute a prepared statement by passing an array of values */
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));
$red = $sth->fetchAll();
$sth->execute(array(175, 'yellow'));
$yellow = $sth->fetchAll();
?>