【问题标题】:codeigniter 4 mysqli_sql_exception #1064 in viewcodeigniter 4 mysqli_sql_exception #1064 在视图中
【发布时间】:2021-12-26 21:08:50
【问题描述】:

这对我来说很奇怪。因为在 codeigniter 4 中,我的一个功能是在控制器中工作,但不在视图中工作。我从控制器中的数据库中获取数据,但是当我尝试从视图中获取相同的数据时,它显示mysqli_sql_exception #1064

示例代码:

在控制器(MyData.php)

function get_data($status){
    return $this->Data->get_data($status);
}

function view_data(){
    return view('user/view-data',['data'=>$this])
}

在模型(MyData.php)

function get_data($status="approved"){
    return $this->select()->where('status',$status)->get()->getResultArray();
}

在查看(MyData.php)

$datas = $data->get_data('approved');

错误

mysqli_sql_exception #1064
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '*, *, *

【问题讨论】:

    标签: codeigniter mysql-error-1064 codeigniter-4


    【解决方案1】:

    我相信你的view_data 函数应该是

    function view_data(){
        return view('user/view-data',['data'=>$this->get_data('approved')])
    }
    

    然后在视图中循环遍历$data 数组

    视图是您必须不需要执行 sql 查询的地方。您只需将数据(对象、数组、字符串、int 等)传递给视图。

    【讨论】:

    • 你好兄弟,谢谢你的回答。您可以看到我正在将我的控制器对象(也包含我的模型数据)传递给我在数据数组中的视图,并且我没有在我的视图中执行任何 sql 查询。我的问题是为什么我得到 mysqli_sql_exception #1064。除此功能外,其他功能正常。
    • 在视图中运行查询违反了 MVC 的想法。如果您真的想在视图中运行查询,则需要在每个视图中启动数据库连接。由你决定,但我不推荐。
    • 我也没有在视图和控制器中运行任何查询,我正在从我的模型中获取数据。
    • 不,您的模型试图在视图范围内未加载数据库时运行查询。这就是为什么你应该只传递实际数据来查看而不是整个 codeigniter 对象。
    • 非常感谢,我在另一个函数中做了同样的事情,它正在工作。在那种情况下,我已经在视图中传递了控制器对象并访问了整个数据。但是在这个函数中我没能得到我的数据。无论如何,直到下一个解决方案,我将在视图中传递函数数据而不是控制器对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2021-02-22
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多