Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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_Mysql_Pdo - Fatal编程技术网

Php PDO获取数组作为行

Php PDO获取数组作为行,php,mysql,pdo,Php,Mysql,Pdo,您好,我正在尝试将一个代码从旧的MSQL转换为PDO,这样我就可以从数据库上传和查看图像,我得到以下错误代码 注意:中的数组到字符串转换 第60行C:\xampp\htdocs\Pentaslash\includes\addpost.php 如果我将fetchAll更改为just fetch,它将不会识别第[2]行,数据库具有以下行id(PK)名称(imagename)图像(longblob) 您在获取时做得不对fetchAll返回结果行的数组。因此,您所要做的就是迭代数组: $resul

您好,我正在尝试将一个代码从旧的MSQL转换为PDO,这样我就可以从数据库上传和查看图像,我得到以下错误代码

注意:中的数组到字符串转换 第60行C:\xampp\htdocs\Pentaslash\includes\addpost.php

如果我将fetchAll更改为just fetch,它将不会识别第[2]行,数据库具有以下行id(PK)名称(imagename)图像(longblob)






您在获取时做得不对
fetchAll
返回结果行的数组。因此,您所要做的就是迭代数组:

$resultRows = $result->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row){
  echo '<img height="300" width="300" scr="' .$row['image']. '">'; // you can also use $row[2]
}
$resultRows=$result->fetchAll(PDO::FETCH_ASSOC);
foreach($行作为$行){
echo“”;//也可以使用$row[2]
}
另一种可能性是:

if ($result->execute(array())) {
  while ($row = $result->fetch()) {
    echo '<img height="300" width="300" scr="' .$row['image']. '">'; // you can also use $row[2];
  }
if($result->execute(array())){
而($row=$result->fetch()){
echo“”;//还可以使用$row[2];
}
使用fetchAll()和foreach循环,您可以尝试以下操作:

    $rows = $result->fetchAll();    
    foreach($rows as $row):
     echo '<img height="300" width="300" scr="data:image;base64,' .$row['image']. '">';
    endforeach;
$rows=$result->fetchAll();
foreach($行作为$行):
回声';
endforeach;
如果仍要使用while循环,则应为:

 while($rows = $result->fetch(PDO::FETCH_ASSOC)){
      echo '<img height="300" width="300" scr="data:image;base64,' .$row['image']. '">';
}
while($rows=$result->fetch(PDO::fetch_ASSOC)){
回声';
}

好的,我将把这个放在这里,供将来有此问题的用户使用, 首先,我的错误是我没有像其他人提到的那样进行foreach循环。 其次,我的SCR语句是错误的,这里是显示base64图像的代码的正确部分

    function displayimage()
    {
    try {
      //  define('SITE_ROOT', dirname(__FILE__));
        require SITE_ROOT . '\dbconnect.php';
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $result = $conn->prepare("SELECT * FROM images");
        $result->execute(); 
        $rows = $result->fetchAll();    
        foreach($rows as $row):
        echo '<img height="300" width="300"  src="data:image/png;base64, ' . $row[2] . '">';
        endforeach;

        $conn = null;
        }
        catch(PDOException $e)
        { 
        echo $e->getMessage();
        } 
    }
函数displayimage()
{
试一试{
//定义('SITE_ROOT',dirname(_FILE__));
需要站点_根。“\dbconnect.php”;
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
$result=$conn->prepare(“从图像中选择*);
$result->execute();
$rows=$result->fetchAll();
foreach($行作为$行):
回声';
endforeach;
$conn=null;
}
捕获(PDO$e)
{ 
echo$e->getMessage();
} 
}

打印($result->fetchAll(PDO::FETCH_ASSOC))
并查看您遗漏了什么
fetchAll
方法将整个结果返回到一个数组中,您不必在执行
的同时执行
循环。它是这样的:
$rows=$result->fetchAll(PDO::FETCH_ASSOC);
。然后您可以这样做:
foreach($rows as$row)
$row
将包含一个与表列及其值关联的数组。该数组为空数组(),嗯,我做错了什么?我不明白为什么数组是空的,数据库中显然有条目,我甚至尝试了N.B建议的foreach方法,但什么也没有发生。空数组意味着表中没有任何内容。此外,插入时您没有使用准备好的语句,但在没有参数的情况下选择时使用它已传递。这完全没有意义。准备好的语句用于传递从用户或任何地方收到的某些值的查询。此外,您正在做的最后一件坏事是使连接无效-为什么要这样做?这毫无意义。注意:未定义索引:我仍然收到此错误,我的数组在某些情况下为空原因是,如果select查询返回结果,我不明白发生了什么。您可以在mysql控制台中进行检查,比如您从phpMyAdmin获得的控制台,或者您从terminal connection获得的控制台
mysql-h$HOST-u$USER-p$PASSWORD
,如果select查询返回结果,那么现在我试着做每件事,它会在$row['image]中加载我想要的任何内容但它不显示图像。我不知道为什么会这样。但我可以在scr中获取名称、id或图像斑点,知道这可能是什么原因吗?不显示图像的问题在我的scr代码中。这是正确的回声
”;
    function displayimage()
    {
    try {
      //  define('SITE_ROOT', dirname(__FILE__));
        require SITE_ROOT . '\dbconnect.php';
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $result = $conn->prepare("SELECT * FROM images");
        $result->execute(); 
        $rows = $result->fetchAll();    
        foreach($rows as $row):
        echo '<img height="300" width="300"  src="data:image/png;base64, ' . $row[2] . '">';
        endforeach;

        $conn = null;
        }
        catch(PDOException $e)
        { 
        echo $e->getMessage();
        } 
    }