【问题标题】:How do raw query in kohana freamwork如何在 kohana 框架中进行原始查询
【发布时间】:2017-06-10 17:23:52
【问题描述】:

我想制作带有查询列表的包。

更新查询如下:

UPDATE table 
SET column = XXX 
WHERE column = XXX AND column2 = XXX;

UPDATE table 
SET column = XXX 
WHERE column = XXX AND column2 = XXX;

UPDATE table 
SET column = XXX 
WHERE column = XXX AND column2 = XXX;

我在一个包中有这 1000 个查询。现在我要进行查询。

我尝试这样做,但没有成功,因为每次我都会收到这样的错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在附近使用的正确语法...

我复制这个查询并过去到 phpmyadmin 并执行它。这些查询有效!

我有一个带有准备好的查询的变量,我试图以不同的方式来做。

Database::instance()->query(NULL,$sql);
DB::query(5,$sql)->execute();
DB::query(Database::UPDATE,DB::expr($sql))->execute();
DB::query(Database::UPDATE,$sql)->execute();

但它不起作用;/

有人知道怎么做吗?

【问题讨论】:

    标签: mysql kohana kohana-3 kohana-orm


    【解决方案1】:

    只需从数据库实例调用方法查询:

    /** @var Database $db */
    $db = Database::instance();
    $db->query(Database::UPDATE, 'UPDATE table SET column = XXX WHERE column = XXX AND column2 = XXX;');
    

    但是,如果您想在一个查询中执行多个 SQL 语句,那么开箱即用是不可能的。默认情况下,Kohana 使用旧的 mysql API,并且 mysql_query 不支持一次调用中的多个查询。

    如果你想使用多个 SQL 语句,我知道 3 种方式:

    1. 前段时间我看到Kohana 的模块支持mysqli,你可以尝试找到他并修改:添加新方法将使用http://php.net/manual/en/mysqli.multi-query.phpmysqli::multi_query 可以在一个查询中执行多个SQL 语句。
    2. 或者您可以切换到使用 PDO。为此,您必须在数据库配置文件中进行更改,根据 Kohana 的文档,为模型中的列添加映射。
    3. 或者创建新的 PDO 连接,只为这个查询设置它(如果你不使用事务,它会比变体 2 更容易)。

    对于变体 2 和 3,您还必须设置一些 PDO 设置:https://stackoverflow.com/a/6461110/419665

    附:通过配置名称调用数据库实例:

    Database::instance('config_name');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多