在控制器中循环图像

Loop image in controller

我在控制器中的代码:

 public function image_item_name($inc) 
{
    if(isset($_POST['inc'])) {
        $inc = $_POST['inc'];
        $i = DB::select("SELECT file_name FROM tbl_image_item_name WHERE inc = '$inc';");

        foreach ($i as $a){ 

          echo '<img src="../../{{ $a[0]->file_name }}">';

        }
    }else {
        echo "Access Denied";
    }

问题: 我无法从数据库中循环图像,请帮助我。

尝试

$images = DB::table('tbl_image_item_name')->where('inc', $inc)->get();

foreach ($images as $image){ 

          echo '<img src="../{{ $image->file_name }}">';

        }

或eloquent方式

$images = YourModelName::where('inc', $inc)->get();

您的代码中存在一些问题

  1. 你的查询是正确的,但你不需要访问 $a[0] 你已经检索了一个对象列表,每个对象都有一个 'file_name' 作为一个 属性 所以直接访问它$a->file_name .
  2. {{ }} 是为 blade 模板引擎设计的语法(即 .blade.php 文件)你不能在普通的 .php 文件中使用它们 .
  3. 在 laravel 中编码时坚持使用 laravel 方式,不要在使用 'request()' 时使用本地全局 php 变量作为 $_GET 和 $_POST帮手 .
  4. 您的查询很容易受到 SQL 注入,因此 不要 使用原始 SQL 查询,除非您使用准备好的查询包围它们声明 .

    public function image_item_name($inc) 
    {
    if(isset(request('inc'))) {
      $inc = request('inc');
      $i = DB::select("SELECT file_name FROM tbl_image_item_name WHERE inc = ?;",[$inc]);
    
    foreach ($i as $a){ 
    
        echo '<img src="../../'.$a->file_name.'">';
    
     }
    }  
    else {
           echo "Access Denied";
     }