-3

我想用表'users'和属性'name'(VARCHAR(20))和'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];
}
?>
4

3 回答 3

1

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

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'];
}
于 2013-05-07T12:36:32.833 回答
1

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

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

此外,您必须设置 PHP 和 PDO 错误报告,如下所述:PDO 查询失败,但我看不到任何错误。如何从 PDO 获取错误消息?

于 2013-05-07T12:37:47.063 回答
1

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

这是你的 pdo 命令: $db_conn = new PDO('mysql:host='.DB_HOST.';dbname'.DB_NAME,DB_USERNAME,DB_PASSWORD);

这是另一个用户的: $db_conn = new PDO('mysql:host=localhost;dbname=testdatabase','test', 'testpass'); 链接: 调试 PDO 连接和 PHP 输出

所以看起来“dbname =”不见了

于 2013-05-07T12:39:11.183 回答