PDO没有从mysql查询返回结果

时间:2014-12-01 17:27:54

标签: php mysql pdo

我很习惯使用mysqli样式的php查询,但我正在尝试使用更多的PDO。我想我大部分都知道如何使用它,但每次都会出现一些引起我注意的事情。

所以我正在对mysql数据库进行基本的SELECT查询,我无法从查询中获得任何结果

PHP

try {
    $dbhandle = new PDO("mysql:dbname = {$dbname}; host = {$dbhost}; port = {$dbport}", $dbuser, $dbpass);
} catch (PDOException $e)
{
    echo "Error when creating Database Handle. Error: " .$e;
}

$sql = $dbhandle->prepare("SELECT projectName FROM `__projects`");
$sql->execute();

$projectList = $sql->fetch(PDO::FETCH_BOTH);

$size = sizeof($projectList);
echo $size;

我不明白为什么返回的数组是空的。我犯了一个错误。我知道用户/传递是可以的,因为我可以在使用mysqli方法时使用相同的查询返回结果。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

尝试调整连接语句。我不确定订单是否会影响它,但是从文档来看,它应该类似于:

mysql:host=localhost;port=3307;dbname=testdb

http://php.net/manual/en/ref.pdo-mysql.connection.php

谢谢,

安德鲁

答案 1 :(得分:0)

如果要执行查询,首先要确保它不会等于或等于false。这样你就可以调试你的脚本了。尝试单独准备查询,而不是立即执行。

以下示例选择' id'是1或3。

<?php
// Connection data (server_address, database, name, poassword)
$hostdb = 'localhost';
$namedb = 'tests';
$userdb = 'username';
$passdb = 'password';

try {
// Connect and create the PDO object
  $conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
  $conn->exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8

  // Define and perform the SQL SELECT query
  $sql = "SELECT * FROM `sites` WHERE `id` IN(1, 3)";
  $result = $conn->query($sql);

  // If the SQL query is succesfully performed ($result not false)
  if($result !== false) {
   $cols = $result->columnCount();           // Number of returned columns

 echo 'Number of returned columns: '. $cols. '<br />';

// Parse the result set
foreach($result as $row) {
  echo $row['id']. ' - '. $row['name']. ' - '. $row['category']. ' - '. $row['link']. '<br />';
}
}

$conn = null;        // Disconnect
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>