首页 > 解决方案 > 如何从一列中提取多行

问题描述

我想问一个简单的问题,我认为很简单我的问题是下一个我在我的网站上创建一个页面,该页面将报告来自数据库的图像和描述,并且我正在使用 PDO 进行咨询,因此代码是下一个跟随

$stmt = $db->prepare("SELECT ruta_img_tutorial,descripcion_paso_imagen,titulo_tutorial FROM tutoriales");
//$stmt->bindParam("titulo",$tituloformula,PDO::PARAM_STR);
$stmt->execute();
// para sacar el objeto que vamos a referenciar abajo
$data=$stmt->fetch(PDO::FETCH_OBJ);// para sacar el objeto que vamos a referenciar abajo
$count=$stmt->rowCount();// cuenta las filas y las mete en un array

$db = null;
// hacer un bucle for para guardar todala la informacion 
$imagen = json_decode($data->ruta_img_tutorial);
$desc_img= json_decode($data->descripcion_paso_imagen);

所以在数据中a引用一个obj然后在获取每个之后我总是为每个从Jason的解码中获取数组我从来没有遇到过问题但问题是当我报告行时有3在列表中,但在 for each 中仅显示其中 1 个这是如何可能的,以及我如何遍历 3 行并为所有人显示每一列 ty

好的,这是对 fechall 所做的更改

try{
        $db = getDB();
        $arraydescrip=[];
        $arrayimagen=[];

        $stmt = $db->prepare("SELECT ruta_img_tutorial,descripcion_paso_imagen,titulo_tutorial FROM tutoriales");
        //$stmt->bindParam("titulo",$tituloformula,PDO::PARAM_STR);
        $stmt->execute();
        // para sacar el objeto que vamos a referenciar abajo
        $data=$stmt->fetchall(PDO::FETCH_OBJ);// para sacar el objeto que vamos a referenciar abajo
        $count=$stmt->rowCount();// cuenta las filas y las mete en un array
        $db = null;
        // hacer un bucle for para guardar todala la informacion 
        $imagen = json_decode($data->ruta_img_tutorial);
        $desc_img= json_decode($data->descripcion_paso_imagen);
        foreach ($imagen as $value){
            echo '<a><img style="width: 400px; height: 400px;" class="img-thumbnail" src="'.$value.'"></a>';
        }
        foreach ($desc_img as $value){
            array_push($arraydescrip, $value);
        }

        foreach ($imagen as $value){
            array_push($arrayimagen, $value);
        }
        print var_dump($arrayimagen);
        // para que no de error de index of tenemos que poner en el for < solo sin el igual ya que para contar el array siempre tiene que ser menor que el total de array 
        for($j=0;$j<count($arrayimagen);$j++){
            echo '<a data-fancybox href="'.$arrayimagen[$j].'"><img style="width: 400px; height: 400px;" class="img-thumbnail" src="'.$arrayimagen[$j].'"></a>';
            echo'<figcaption style="width: 400px; text-align: justify;" >'.wordwrap($arraydescrip[$j],1000,"<br><br>").'</figcaption>';
        }


}catch(PDOException $e) {
    echo '{"error":{"text":'. $e->getMessage() .'}}';
}

不,它给了我一些通知,我不是指一个 obj 为什么我想要它的解决方案或为什么它给出通知报告

注意:尝试在第 110 行获取 C:\xampp\htdocs\PaginaWebPirotecniaGrupo\classes\tutosupload.php 中非对象的属性 'ruta_img_tutorial'

注意:尝试在第 112 行获取 C:\xampp\htdocs\PaginaWebPirotecniaGrupo\classes\tutosupload.php 中非对象的属性 'descripcion_paso_imagen'

警告:在第 113 行的 C:\xampp\htdocs\PaginaWebPirotecniaGrupo\classes\tutosupload.php 中为 foreach() 提供的参数无效

警告:在第 116 行的 C:\xampp\htdocs\PaginaWebPirotecniaGrupo\classes\tutosupload.php 中为 foreach() 提供的参数无效

警告:在 C:\xampp\htdocs\PaginaWebPirotecniaGrupo\classes\tutosupload.php 中为 foreach() 提供的参数无效,第 120 行 array(0) { }

好的,我现在制作这条新线路,它全部来自数据库

 $db = getDB();
        $arraydescrip=[];
        $arrayimagen=[];

        $stmt = $db->prepare("SELECT ruta_img_tutorial,descripcion_paso_imagen,titulo_tutorial FROM tutoriales");
        //$stmt->bindParam("titulo",$tituloformula,PDO::PARAM_STR);
        $stmt->execute();
        // para sacar el objeto que vamos a referenciar abajo
        $data=$stmt->fetchAll(PDO::FETCH_OBJ);// para sacar el objeto que vamos a referenciar abajo
        $count=$stmt->rowCount($data);// cuenta las filas y las mete en un array
        $db = null;
        // hacer un bucle for para guardar todala la informacion 

        //$desc_img= json_decode($data->descripcion_paso_imagen);
        foreach ($data as $row){
            $imagen = json_decode($row->ruta_img_tutorial);
            foreach($imagen as $value){
            echo '<a><img style="width: 400px; height: 400px;" class="img-thumbnail" src="'.$value.'"></a>';

            }
        }

标签: phpmysqlpdo

解决方案


获取所有行而不是一行。改变:

$data=$stmt->fetch(PDO::FETCH_OBJ);

至:

$data=$stmt->fetchAll(PDO::FETCH_OBJ);

推荐阅读