【发布时间】:2013-06-23 21:39:12
【问题描述】:
首先,我刚刚将所有PHP 文件切换为使用PDO,这很高兴。但是我对PHP 不是很有经验,更不用说PDO 所以我遇到了问题。我在 SQL 数据库中运行以下查询,它返回正确的值。
SELECT *
FROM table_gon_0621_516
WHERE id = '1'
现在我在我的PHP 中使用它
require_once ("../Android/connect_db.php");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$table_name = 'table_gon_0621_516';
try {
$names = $db->query("
SELECT *
FROM `".$table_name."`
WHERE `id` = '1'
");
$rows = $names->fetchAll(PDO::FETCH_ASSOC);
$col_map = array_flip($rows);
echo '<pre>', print_r($rows, true), '</pre>';
} catch (PDOException $e){
die($e->getMessage());
}
我在浏览器中收到此错误
SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected
这是我的连接代码
<?php
$config['db'] = array (
'host' => 'localhost',
'username' => 'admin',
'password' => 'xxxx', //checked and correct
'dbname' => 'xxxx_beta' //checked and correct
);
$db = new PDO(
'mysql:host = '.$config['db']['host'].';
dbname = '.$config['db']['dbname'],
$config['db']['username'],
$config['db']['password']
);
?>
此页面加载正确,没有错误,我连接成功。我做错了什么?
编辑
我变了
$data = $names->fetchAll(PDO::FETCH_ASSOC);
到
$data = $names->fetch(PDO::FETCH_ASSOC);
我仍然遇到同样的问题。我还更新了上面的代码以显示此更改
第二次编辑
我更改了上面的代码,现在收到一条新消息,我假设我没有连接?
【问题讨论】:
-
是否有完整的错误报告和显示?
-
由于您将
$table_name粘贴到查询中,您可以将FROM `".$table_name."`替换为FROM `$table_name`。 -
@mzedeler 很好,我不知道,我会试试的。谢谢!
-
找出问题所在的一种方法是将
die("HERE");放在第一行之后。如果您看到 HERE 则不是,您继续将die("HERE");向下移动一行,直到您看到服务器错误,这就是该行。在没有错误报告的情况下进行调试有点慢,但它可以工作。 -
显示您创建 PDO 对象的
connect_db.php的内容