Php PDO获取数组作为行
您好,我正在尝试将一个代码从旧的MSQL转换为PDO,这样我就可以从数据库上传和查看图像,我得到以下错误代码 注意:中的数组到字符串转换 第60行C:\xampp\htdocs\Pentaslash\includes\addpost.php 如果我将fetchAll更改为just fetch,它将不会识别第[2]行,数据库具有以下行id(PK)名称(imagename)图像(longblob)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
您在获取时做得不对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();
}
}