我尝试使用PHP (PDO)从MySQL数据库的一个表列中获取值,但我在同一行中有两个错误,这就是行(第7行) ):
$query = $dbh->prepare("SELECT * FROM table_name");
这些是错误消息:
注意:未定义的变量:dbh in ... on line 7
致命错误:在第7行的...中的非对象上调用成员函数prepare()
我的完整代码:
1)文件 config.php
<?php
$host = "localhost";
$db_user = "user";
$db_psw = "pass";
$db_name = "database";
?>
2)文件 connection.php
<?php
include("config.php");
//collegamento
$col = "mysql:host=$host;dbname=$db_name";
try {
//tentativo di connessione
$db = new PDO($col , "$db_user", "$db_psw");
}
//gestione errori
catch(PDOException $e) {
echo 'Attenzione errore: '.$e->getMessage();
}
?>
3)文件 display-values.php (第7行中的错误)
<?php
// richiamo lo script responsabile della connessione a MySQL
require 'connection.php';
?>
<?php
$query = $dbh->prepare("SELECT * FROM table_name");
$query->execute();
$result = $query->fetchall();
?>
<?php
echo
"<table border='2'>
<tr>
<th>ID</th>
<th>A Number</th>
<th>First Name</th>
<th>Last Name</th>
<th>Why</th>
<th>Comments</th>
<th>Signintime</th>
</tr>"
;
foreach($result as $row)
{
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td><a href=Student.php?studentA_num=" . $row['anum'] . ">" .$row['anum'] . " </a></td>";
echo "<td>" . $row['first'] . "</td>";
echo "<td>" . $row['last'] . "</td>";
echo "<td>" . $row['why'] . "</td>";
echo "<td>" . $row['comments'] . "</td>";
echo "<td>" . $row['signintime'] . "</td>";
echo "<td> <input type=\"button\" value=\"Start Session\"onClick=\accept.php?id=" . $row['id'] . "&start=true></td>";
}
echo "</tr>";
echo "</table>";
?>
注意:在此代码中,我尝试获取所有值(仅用于测试),但我需要从一列中获取数据&#34; name_column&#34;只有,那么如何修复这两个错误并编辑代码以从特定列中提取值?
提前致谢!
答案 0 :(得分:2)
您的PDO对象为db
而不是dbh
错误说明:
注意:第7行的未定义变量: dbh ...
PHP无法找到名为dbh的初始化变量,因此 dbh 是未定义的变量,因此您在此处注意到了。
致命错误:在第7行的...中的非对象上调用成员函数prepare()
当你的代码在一个不存在的变量上调用一个方法时,PHP正在大喊第二个错误。
总结一下,你只需要改变
$query = $dbh->prepare("SELECT * FROM table_name");
的
$query = $db->prepare("SELECT * FROM table_name");
编辑查询以从2列中获取值:
如果您只想获取2列的值,只需更改您的SQL查询:
$query = $db->prepare("SELECT column_name_1, column_name_2 FROM table_name");
使用此查询,您可以从 column_name_1 和 column_name_2
中选择值我建议你采取一些basic SQL tutorial
答案 1 :(得分:1)
使用$db
代替$dbh
。因为在connection.php
中,您要保存$db
和display-values.php
中$dbh
用于执行查询的$db
数据库连接链接。因此,请尝试使用$dbh
代替{{1}}。