PDO从数据库读取

时间:2015-06-14 20:50:14

标签: php pdo

我使用PDO编写了一个代码来从数据库中读取表。 我试着回应我的结果,但是我得到一个没有错误的空白页。

我的代码是:

<?php
include 'config.php';
id = "264540733647332";
try {
    $conn = new PDO("mysql:host=$hostname;dbname=mydata", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }

    $result = $conn->query("SELECT * FROM mytable WHERE id='".$id."';"); 

    if ($result->fetchColumn() != 0)
    {
        foreach ( $result->fetchAll(PDO::FETCH_BOTH) as $row ) {

            $Data1 = $row['Data1'];
            $Data2 = $row['Data2'];

           echo $Data2;
        }
    }
    ?>

但回声是空的,没有任何错误。 我做错了什么?

谢谢大家!

2 个答案:

答案 0 :(得分:0)

我假设只有一个ID为#34; 264540733647332&#34;的记录。

问题是$result->fetchColumn()调用会读取结果集中的第一行,然后进入下一个结果。由于只有一个结果,后来对$result->fetchAll()的调用什么都不返回,因此没有数据显示。

要解决此问题,请将fetchColumn替换为rowCount

<?php
include 'config.php';
id = "264540733647332";
try {
    $conn = new PDO("mysql:host=$hostname;dbname=mydata", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }

    $result = $conn->query("SELECT * FROM mytable WHERE id='".$id."';"); 

    if ($result->fetchColumn() != 0)
    {
        foreach ( $result->fetchAll(PDO::FETCH_BOTH) as $row ) {

            $Data1 = $row['Data1'];
            $Data2 = $row['Data2'];

           echo $Data2;
        }
    }
    ?>

答案 1 :(得分:0)

几乎无法改变:

  • 别忘了$
  • 如果您要抓住错误,请抓住整个pdo代码
  • 您可以使用rowCount()来计算行数
  • 如果记录计数为0
  • 则回显

include 'config.php';
$id = "264540733647332";
try {
    $conn = new PDO("mysql:host=$hostname;dbname=mydata", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $result = $conn->query("SELECT * FROM mytable WHERE id='".$id."';"); 

    if ($result->rowCount() != 0)
    {
        $row = $result->fetch(PDO::FETCH_BOTH);
        echo $row['Data1'];
        echo $row['Data2'];
    }else{
        echo 'no row found';
    }
}catch(PDOException $e){
    echo "error  " . $e->getMessage();
}

也可以使用预备语句,例如:

$result = $conn->prepare("SELECT * FROM mytable WHERE id=:id"); 
$result->execute(array(':id'=>$id));