无法使用 PHP PDO 从 PHPMyAdmin 中选择数据

Posted

技术标签:

【中文标题】无法使用 PHP PDO 从 PHPMyAdmin 中选择数据【英文标题】:Failed to select data from PHPMyAdmin using PHP PDO 【发布时间】:2017-11-03 21:43:03 【问题描述】:

这是我的代码:

<?php
//Connect to DB
$servername = "localhost";
$username = "root";
$password = "";

try 
    $conn = new PDO("mysql:host=$servername;dbname=users", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

catch(PDOException $e) 
    echo "Connection failed: " . $e->getMessage();


function printResult($conn) 
    $sql = 'SELECT name FROM info';
    foreach ($conn->query($sql) as $row) 
        print $row['name'] . "\t";
    

?>

但是,当我运行它时,什么都没有打印出来。怎么了?

是的,我的桌子不是空的。我 100% 能够使用 MySQLi 面向对象选择和打印数据,但不能使用 PDO。我的代码有什么问题?

【问题讨论】:

运行查询后你没有获取任何东西 你看起来不像你调用了这个函数。如果你不调用一个函数,它就不会运行 @Akintunde 您可以像这样运行查询,请参阅手册中的第一个示例php.net/manual/en/pdo.query.php(实际上看起来这是手册中该示例的修改版本)。正如 Riggs 所说,很可能是因为没有调用该函数。 哦,我应该在哪里调用该函数?我是新手。在 foreach $sql = 选择命令之前? 定义好printResult($conn)就行了。 【参考方案1】:

您不会从任何地方调用函数printResult。 添加到您的代码printResult($conn);

【讨论】:

【参考方案2】:

要运行一个函数,你必须调用它。

<?php
//Connect to DB
$servername = "localhost";
$username = "root";
$password = "";

try 
    $conn = new PDO("mysql:host=$servername;dbname=users", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

catch(PDOException $e) 
    echo "Connection failed: " . $e->getMessage();
    // and if this fails there is no point continuing so add an exit
    exit;


function printResult($conn) 
    $sql = 'SELECT name FROM info';
    foreach ($conn->query($sql) as $row) 
        print $row['name'] . "\t";
    


printResult($conn);   // call the function

?>

【讨论】:

工作,谢谢。只有一个问题:看这个例子:w3schools.com/php/showphpfile.asp?filename=demo_db_select_pdoW3schools 没有在任何地方调用函数“beginChildren”,他们的代码是如何工作的? 这是一个比你给我们的例子更复杂的例子 这一切都由代码中的迭代器类控制【参考方案3】:

调用函数

<?php
//Connect to DB
$servername = "localhost";
$username = "root";
$password = "";

try 
    $conn = new PDO("mysql:host=$servername;dbname=users", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

catch(PDOException $e) 
    echo "Connection failed: " . $e->getMessage();


function printResult($conn) 
    $sql = 'SELECT name FROM info';
    foreach ($conn->query($sql) as $row) 
        print $row['name'] . "\t";
    

//call the function here
printResult($conn);
?>

【讨论】:

以上是关于无法使用 PHP PDO 从 PHPMyAdmin 中选择数据的主要内容,如果未能解决你的问题,请参考以下文章

PHP:PDO查询不返回结果,但在phpmyadmin中同样的查询返回4个结果?

SQL 查询在通过 phpmyadmin 进行测试时工作正常,但在 PHP PDO 中尝试相同的事情时失败

mysql“日期之间”查询在 phpmyadmin 中有效,但 PDO 不返回任何内容

php 无法连接到 sql server 2008(使用 pdo dblib)

PHP PDO 无法获取 OUT 参数值

无法从 JSON 接收数据 - PHPMyAdmin