从phpMyAdmin数据库检索数据无效

从phpMyAdmin数据库检索数据无效,php,database,pdo,phpmyadmin,wamp,Php,Database,Pdo,Phpmyadmin,Wamp,我想用表“users”和属性“name”VARCHAR20和“id”INTEGER从数据库“phpopdracht5”检索数据,但它不起作用。我的代码一定有问题 <?php define("DB_HOST", "localhost"); define("DB_USERNAME", "root"); define("DB_PASSWORD", ""); define("DB_NAME", "phpopdracht5"); try { $db_conn = new PDO('mys

我想用表“users”和属性“name”VARCHAR20和“id”INTEGER从数据库“phpopdracht5”检索数据,但它不起作用。我的代码一定有问题

<?php
define("DB_HOST", "localhost");
define("DB_USERNAME", "root");
define("DB_PASSWORD", "");
define("DB_NAME", "phpopdracht5");

try
{
    $db_conn = new  PDO('mysql:host='.DB_HOST.';dbname'.DB_NAME,DB_USERNAME,DB_PASSWORD);
}
catch(PDOException $e)
{
print "Error!:".$e->getMessage()."\n";
die();
}

$sth = $db_conn->prepare('SELECT * FROM users'); 
$sth->bindParam(':name', $name, PDO::PARAM_STR, 20);
$sth->bindParam(':id', $id, PDO::PARAM_INT);
$sth->execute();

while ($row = $sth->fetch(PDO::FETCH_BOTH)) {
echo $row[0];
}
?>

您绑定了查询中不存在的参数。 您的查询必须是:

SELECT * FROM users WHERE name = :name AND id = :id
否则,如果您希望所有用户:

$sth = $db_conn->prepare('SELECT id, name FROM users'); 
$sth->execute();

while ($row = $sth->fetch(PDO::FETCH_BOTH)) {
echo $row['id'] . ':' . $row['name'];
}

您不需要绑定参数来获取它们。只是

$sth = $db_conn->prepare('SELECT * FROM users'); 
$sth->execute();

此外,您还必须设置PHP和PDO错误报告,如下所述:

看起来您缺少一个或两个等号:

这是您的pdo命令: $db_conn=new PDO'mysql:host='.db_host';dbname'.DB_名称、DB_用户名、DB_密码

这是另一个用户的: $db_conn=new PDO'mysql:host=localhost;dbname=testdatabase'、'test'、'testpass'; 链接:


因此,dbname=似乎丢失了

您正在将参数添加到准备好的语句中;但是没有可以绑定它们的占位符。尝试从name=?的用户中选择*?id=?我想说他们更想把它们绑定起来,因为数据库不是phpmyadmin,而是一个mysql数据库,phpmyadmin只是一个查看mysql数据库中数据的工具。哇,thx,这真是一个愚蠢的错误。我的坏消息是:这件事发生在我们当中最好的人身上。快乐编码!!要使这些事情不可能发生,就必须有错误报告