从phpMyAdmin数据库中检索数据不起作用[关闭]

Posted

技术标签:

【中文标题】从phpMyAdmin数据库中检索数据不起作用[关闭]【英文标题】:retrieving data form phpMyAdmin database doesn't work [closed] 【发布时间】:2013-05-01 09:57:01 【问题描述】:

我想从我的数据库 'phpopdracht5' 中检索具有表 'users' 和属性 'name' (VARCHAR(20)) 和 'id' (INTEGER) 的数据,但它只是不起作用。我的代码一定有问题

<?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=? AND id=? 我会说他们宁愿因此而想绑定它们 仅供参考,数据库不是 phpmyadmin,它是一个 mysql 数据库,phpmyadmin 只是一个查看 mysql 数据库中数据的工具。 【参考方案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'); 链接:DEBUG PDO Connection & PHP Output

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

【讨论】:

哇,这真是一个愚蠢的错误。我的坏:/ 它很酷,它发生在我们最好的人身上。快乐编码! 为了让这样的事情不可能发生,必须有错误报告【参考方案2】:

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

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'];

【讨论】:

【参考方案3】:

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

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

此外,您必须设置 PHP 和 PDO 错误报告,如下所述:PDO query fails but I can't see any errors. How to get an error message from PDO?

【讨论】:

以上是关于从phpMyAdmin数据库中检索数据不起作用[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从本地存储中检索数据不起作用

将用户输入从文本框插入到数据库(使用 mysql 的 PHP 到 PHPMYADMIN)代码由于某种原因不起作用

phpMyAdmin CSV 上传替换数据不起作用

从视图中检索数据的查询不起作用

从核心数据中检索 UUID 并设置 UUID 变量不起作用

cpanel中的Phpmyadmin导入数据库不起作用