使用PDO从表的一列中获取值

时间:2014-08-06 10:12:07

标签: php mysql pdo fatal-error

我尝试使用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;只有,那么如何修复这两个错误并编辑代码以从特定列中提取值?

提前致谢!

2 个答案:

答案 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中,您要保存$dbdisplay-values.php$dbh用于执行查询的$db数据库连接链接。因此,请尝试使用$dbh代替{{1}}。