2017-01-25 1 views
0

私はクエリのリストを使ってパッケージを作りたいです。kohana freamworkで生のクエリを行うにはどうすればいいですか?

などのようにこれは、更新クエリである:私は1つのパッケージにこれらの1000個のクエリを持って

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; 

。今私は、クエリを実行したい。

あなたの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(); 

が、それは動作しません。/

誰もがそれを行う方法を知っていますか?

答えて

0

ただデータベースのインスタンスからメソッドを呼び出すクエリ:

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

をしかし、あなたは1つのクエリで複数のSQL文を実行したい場合には、箱から出し不可能です。デフォルトでは、Kohanaは古いmysql APIを使用し、mysql_queryは1回の呼び出しで複数のクエリをサポートしません。

あなたは私は3の方法を知っている複数のSQL文を使用したいこと:

  1. いくつかの時間前にKohanaのために、私はmysqliのサポートのためのモジュールを見て、あなたは彼を見つけて、変更しようとすることができますでしょう、それに追加する新しい方法use http://php.net/manual/en/mysqli.multi-query.php mysqli :: multi_queryは1つのクエリで複数のSQL文を実行できます。
  2. また、PDOを使用するように切り替えることもできます。このためには、Kohanaのドキュメントにあるデータベース設定ファイルを変更して、モデルの列のマップを追加する必要があります。
  3. または、このクエリに対してのみ新しいPDO接続を作成します(トランザクションを使用しない場合は、バリアント2よりも簡単です)。 https://stackoverflow.com/a/6461110/419665

    P.S.:あなたには、いくつかのPDOの設定を設定する必要がありますバリアント2と3についても

コールデータベースインスタンスの設定名:

Database::instance('config_name'); 
関連する問題