在php中测试pdo代码中的问题

时间:2014-07-28 14:39:48

标签: php mysql pdo

嗨,这是我的PHP代码:

<?php

function dbConnect() {
  global $dbh;

  $dbInfo['database_target'] = "localhost";
  $dbInfo['database_name'] = "pdo";
  $dbInfo['username'] = "root";
  $dbInfo['password'] = "";

  $dbConnString = "mysql:host=" . $dbInfo['database_target'] . "; dbname=" . $dbInfo['database_name'];
  $dbh = new PDO($dbConnString, $dbInfo['username'], $dbInfo['password']);
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $error = $dbh->errorInfo();
  if($error[0] != "") {
      print "<p>DATABASE CONNECTION ERROR:</p>";
      print_r($error);
  }
}

function dbQuery($queryString) {
  global $dbh;

  $query = $dbh->query($queryString);
  $i = 0;
  foreach ($query as $query2) {
    $queryReturn[$i] = $query2;
    $i++;
  }
  if($i > 1) {
    return $queryReturn;
  } else {
    return $queryReturn[0];
  }
}

dbConnect(); // Connect to Database

?>

运行此代码时,它会显示如下输出:

DATABASE CONNECTION ERROR:

Array ( [0] => 00000 [1] => [2] => )

我想知道,这段代码是否正确,如果此代码中有任何错误,请指导我,我是pdo的新手。

谢谢。

3 个答案:

答案 0 :(得分:0)

在建立连接后不要检查errorInfo。

如果连接失败,PDO会抛出异常。

答案 1 :(得分:0)

我认为你的意思是global $dbInfo;而不是global $dbh;,因为dbInfo似乎在此函数中未定义,与dbh不同。

答案 2 :(得分:0)

请阅读文档:

http://php.net/manual/en/pdo.query.php

http://en.php.net/PDOStatement

PDO :: query返回PDOStatement对象。此类具有公共属性rowCount。 你不需要迭代所有结果,计算em等,...

function dbQuery($queryString) {

中的所有代码

可以用一行代替:

return $query->rowCount > 1 ? $query->fetch() : /* else */;