PHP PDO - 可以连接但查询不工作

我想摆脱旧 mysql 扩展的束缚,我只是在数据库中的表上测试 PDO 连接和简单查询。我似乎能够连接,(“连接成功” echo )但这是好时光结束的地方。我现在花了太多时间尝试开始使用 PDO。

<?php
$host = 'localhost';
$port = '3306'; 
$username = 'user';
$password = 'blabla';
$database = 'workslist';

try {
    $db = new PDO("mysql:host=$host; port = $port; dbname = $database", $username, $password);
    echo 'connection successful<br />';

    $query = 'SELECT * FROM main';
    $statement = $db->prepare($query);
    $statement->execute();
    $results = $statement->fetchAll();
    $statement->closeCursor();      

    foreach($results as $r){
            echo $r['work'] . '<br />';
    }

} catch (PDOException $e) {
    echo 'Error!: ' . $e->getMessage() . '<br />';
    die();
} 
?>

上面的有什么问题吗?

数据库名称是“workslist”,表名称是“main”,“work”是该表中的列之一。我使用的 PHP 版本是 5.3.4,我在 win7 上使用 wamp。我运行了 phpinfo() 并在 PDO 标题下启用了 PDO 驱动程序 mysql、sqlite。为了确保数据库和表确实存在,我已经在 MySQL 上进行了尝试,并且可以使用旧的 mysql_fetch_array() 方法返回行。我检查了 php.ini 文件以确保“extension=php_pdo...”行都没有注释。

干杯

最佳答案

这应该有效。

请仔细检查您在该数据库中是否确实有一个名为“main”的表。

请注意,在您 execute() 查询之前,PDO 不会发现此错误,如果您的查询有问题,默认行为是返回一个空结果,抛出异常。

要使 PDO 噪声更大,在构造 PDO 时添加 PDO::ERRMODE_EXCEPTION 选项:

$db = new PDO("mysql:host=$host;port=$port;dbname=$database", $username, $password, 
              array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)
);

现在检查您是否看到以下内容:

Error!: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'workslist.main' doesn't exist

https://stackoverflow.com/questions/8365584/

相关文章:

php - 快速获取图像的亮度/光度

django - 只读表单字段格式

r - 描述性表格 - 如何创建包含数值变量和分类变量的表格

json - 将Json信息转换成F#列表

wordpress - 在 wordpress 中使用 wp_list_table 时出现 fata

networking - BGP 与 OSPF 和 IsIs

php - 如何使用某些 php 函数隐藏或编码 url?

php - 使用 PHP 检查字符串是否包含(CR、LF 或 CF 或 LF)或不包含

vb.net - Gridview 显示和隐藏特定列

php - Wordpress 检查是否是标签页