PHP PDO SELECT语句不返回任何内容

PHP PDO SELECT语句不返回任何内容,php,sql,select,pdo,Php,Sql,Select,Pdo,我不知道我在这里做错了什么,但我只是尝试连接到数据库搜索主键,并将该行放入数组中。我能得到的最好的是一个空白屏幕,我很高兴能得到它。非常感谢你的帮助 <?php include ('DatabaseAccessV2.php'); $selectedData=new DatabaseAccess(); $selectedData->tableToArray(); ?> <?php class DatabaseAccess

我不知道我在这里做错了什么,但我只是尝试连接到数据库搜索主键,并将该行放入数组中。我能得到的最好的是一个空白屏幕,我很高兴能得到它。非常感谢你的帮助

 <?php

    include ('DatabaseAccessV2.php');

    $selectedData=new DatabaseAccess();
    $selectedData->tableToArray();

    ?> 

    <?php
 class DatabaseAccess{
    function tableToArray(){
            $dbName='db1';
            $table='table1';
            $i=1;
            $dbh = new PDO('mysql:host=localhost:3306;dbname='.$dbName, 'root', '');
            $sql = "select Close from '$table' where entryNum ='$i'";
            $sth = $dbh->prepare($sql);
            $sth->execute();
            $result = $sth->fetch(PDO::FETCH_ASSOC);
            echo($result);
        }
}


您的代码有一些地方出错

首先,将表括在单引号中是不正确的

它应该在哪个位置

select Close from `$table`
或者,如果您没有传递潜在的保留字,或者表名中包含连字符或空格,或者任何让MySQL抱怨的内容,请删除它们

select Close from $table
添加
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常)在连接打开后立即执行,这将捕获该错误


然后,正如Rizier123在评论中所述,并引用它:

试试这个:$dbh=newpdo('mysql:host=localhost;port=3306;dbname='。$dbname,'root','');也可以这样做:printr_($result)

你有你的端口设置的方式,应该做的Rizier提到

  • 该冒号
    应该是
    =
    符号
Rizier123的荣誉
按照手册

更完整的示例:

来自


没有错误消息和明显的错误sql错误。添加
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常)在连接打开后立即执行。请尝试以下操作:
$dbh=new-PDO('mysql:host=localhost;port=3306;dbname='。$dbname,'root',')也执行:
打印结果肯定是个问题,但是Rizier123也提出了一个关于PDO中端口的好观点constructor@ChrisForrence是的,这也可能是一个问题,我之前确实想过。我将引用他的评论,谢谢你,克里斯。
select Close from $table
mysql:host=localhost;port=3307;dbname=testdb
mysql:unix_socket=/tmp/mysql.sock;dbname=testdb
$dbh = new PDO('mysql:host=xxx;port=xxx;dbname=xxx', 'xxx', 'xxx', 
array( PDO::ATTR_PERSISTENT => false));