PDO self prepare返回一个空字符串

时间:2014-03-19 19:13:22

标签: php mysql sql pdo

我通过此连接到数据库。

 public static function connect() {
  try {
    self::$db_handle = new PDO("mysql:host=".SERVER.";dbname=".DBNAME,USER, PASSWORD);
    self::$db_handle->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    echo "Successful connected to DB<br/>";
  }
  catch(PDOException $e) {
    echo "Conncection failed: " . $e->getMessage();
    exit();
  }
}

它与成功连接相呼应。所以我猜,连接没有问题。

现在我使用以下代码查询数据库。

    $sql=func_get_arg(0);
    $params=array_slice(func_get_args(), 1);

    $statement=self::$db_handle->prepare($sql);

    echo "<br/>Stat: ".$statement."</br>"; //Just for testing purposes

    if($statement===false){
       echo "False";
      return false;
    }
    if(count($params)==0){
      $results=$statement->execute();
    }
    else
      $results=$statement->execute($params);
    if($results===false)
      return false;
    else{
      return $statement->fetchAll(PDO::FETCH_ASSOC);
    }

我不知道为什么它与False相呼应。我试图回应的陈述是一个空字符串。

$ sql =

 "SELECT * FROM `users` where $key = ?"

和$ params是电子邮件地址本身。

我无法发现自己​​的错。请帮助。谢谢:))

2 个答案:

答案 0 :(得分:1)

将其更改为此

public static function connect()
{
    self::$db_handle = new PDO("mysql:host=".SERVER.";dbname=".DBNAME,USER, PASSWORD);
    self::$db_handle->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    self::$db_handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
}

答案 1 :(得分:0)

$PDO = <yourclass>::connect();
$statement = $PDO->prepare("SELECT * FROM users WHERE key=?");
$statement->execute(array(1));
echo $PDO->lastInsertId();