如何在kohana freamwork中进行原始查询

时间:2017-01-25 13:40:54

标签: mysql kohana kohana-3 kohana-orm

我想要make包和查询列表。

更新查询如:

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个查询。现在我想做make查询。

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

  

您的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();

但它不起作用; /

任何人都知道怎么做?

1 个答案:

答案 0 :(得分: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语句:

  1. 前几次为Kohana我看到了mysqli支持的模块,你可以尝试找到他并修改:添加到新的方法将使用http://php.net/manual/en/mysqli.multi-query.php mysqli :: multi_query可以在一个查询中执行多个SQL语句
  2. 或者您可以切换到使用PDO。为此,您必须在数据库配置文件中进行更改,根据Kohana的文档,为模型中的列添加地图。
  3. 或者在为此查询设置时创建新的PDO连接(如果您不使用事务,它将比变体2更容易)。
  4. 同样对于变体2和3,您必须设置一些PDO设置:https://stackoverflow.com/a/6461110/419665

    P.S。对于按配置名称调用数据库实例:

    Database::instance('config_name');