Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数据库读取的PDO_Php_Pdo - Fatal编程技术网

Php 从数据库读取的PDO

Php 从数据库读取的PDO,php,pdo,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:

我已经用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;
        }
    }
    ?>

我假设只有一条id为“264540733647332”的记录

问题是
$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;
        }
    }
    ?>
需要更改的内容很少:

  • 别忘了
    $
  • 如果要捕获错误,请捕获整个pdo代码
  • 您可以使用
    rowCount()
    对行进行计数
  • 如果记录计数为0,则回显某些内容

也可以使用准备好的语句,例如:

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

请尝试以下操作:-
$result=$conn->query(“从mytable中选择*,其中id=”“$id.””)你好,我做了更改,但没有结果,也没有错误。我还是看不到回声。感谢您的建议,
$result
可能会失败。回显查询并查看直接执行时是否有效。你也应该使用准备好的陈述。我猜,
$id
来自客户?…或者更确切地说,这是您的代码中的输入错误<代码>id=“264540733647332”id前面没有
$
?另外,如果数据库中的
id
设置为
int
,则
264540733647332
太大。这是一个打字错误,而不是我的代码。对不起!id就是这里的一个例子!非常感谢。这个丢失的$在这里是一个输入错误,而不是在我的代码中。对不起!非常感谢您的解决方案。代码正在运行!!非常感谢您的解决方案。我用rowCount更改了fetchColumn,代码现在正在运行!
$result = $conn->prepare("SELECT * FROM mytable WHERE id=:id"); 
$result->execute(array(':id'=>$id));