在我班上使用pdo php

时间:2011-07-08 15:07:44

标签: php pdo

我在班上使用pdo php

<?php 
class User 
 {
   private $db;
   public function __construct($host, $user, $pass, $db)
   {
    try
     {
      $this->db = new PDO("mysql:host=$host;dbname=$db", $user, $pass); 

     }
    catch (Exception $e)
     {
      die('Error : ' . $e->getMessage());
     }
   } 
  public function modUser($uid, $email)
   {
    $query = $this->db->exec("UPDATE Users SET  Email =:email  WHERE Id_User =:uid");
         $query->bindValue(':email', $email, PDO::PARAM_STR);   
   }
}
?>

当我像这样使用类用户时:

$user = new User('localhost','tester','0000','Agency);

效果很好,但问题是当使用配置文件连接数据库并写入

$user = new User($host, $user, $pass, $db);

我收到错误:

<b>Warning</b>:  PDO::__construct() expects parameter 2 to be string, object given in <b>C:\wamp\www\new_template-latest\new_template\classes\class.User.php</b> on line <b>13</b><br />
<br />
<b>Fatal error</b>:  Call to a member function exec() on a non-object in <b>C:\wamp\www\new_template-latest\new_template\classes\class.User.php</b> on line <b>140</b><br />

2 个答案:

答案 0 :(得分:5)

您正尝试将new User对象分配给PDO参数。您需要为User对象选择一个新的变量名,或为$user数据库配置变量选择一个新名称。

答案 1 :(得分:2)

您正在将$user变量直接传递给构造函数,该构造函数现在是new User对象。您应该将用户名字符串存储在具有不同名称的变量中。