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

PHP PDO SELECT statment returning nothing

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

 <?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);
        }
}

您的代码有一些问题。

首先,您将 table 括在单引号中,这是不正确的 identifier.

select Close from '$table'

它应该以刻度为单位

select Close from `$table`

如果您没有传递潜在的保留字或在 table 名称中包含连字符或 space 或任何要向 MySQL 投诉的内容,则

或删除它们。

select Close from $table

在连接打开后立即添加 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);,这将捕获该错误。


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

Try this: $dbh = new PDO('mysql:host=localhost;port=3306;dbname='.$dbName, 'root', ''); Also do: printr_($result);

您设置端口的方式应该按照 Rizier 提到的方式进行。

  • 那个冒号 : 应该是一个 = 符号。

向 Rizier123 致敬


根据手册http://php.net/manual/en/ref.pdo-mysql.connection.php

More complete examples:

mysql:host=localhost;port=3307;dbname=testdb
mysql:unix_socket=/tmp/mysql.sock;dbname=testdb

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

$dbh = new PDO('mysql:host=xxx;port=xxx;dbname=xxx', 'xxx', 'xxx', 
array( PDO::ATTR_PERSISTENT => false));