1

できればYiiのアクティブレコードを使用して、MYSQLデータベースに配列を挿入したいと思います。

たとえば、私は配列を持っています:

User = array(
    fname => "Joe"
    lname => "Schmidt"
)

私のデータベースにid、fname、lname列のUserテーブルがあります。オプションの1つは、オブジェクトを作成して次のことを行うことです。

$user = new User;
$user->fname = User['fname'];
$user->lname = User['lname'];
$user->save();

ただし、これはそのような一般的な機能のための非常に多くのコードのようです。独自の関数を記述したり、SQLクエリハックを実行したりせずに、配列キーが対応する列と一致する配列をデータベースに挿入する方法はありますか?理想的には、Yiiの既存のアクティブレコードを使用します。

4

4 に答える 4

5

あなたがしたいことは、フレームワーク自体によって処理されます。

次のように一括割り当てできます。

$user->attributes=$_POST['User'];

一括割り当ての詳細を読む

于 2012-07-23T05:45:41.787 に答える
0

私はこれまでYiiを使用したことがないため、これを使用したソリューションを提供することはできませんが、配列をシリアル化して、データベースの単一セルに次のように格納できます。

$user = array("fname" => "Joe", "lname" => "Schmidt");
$serialized = serialize($user);

//Store the $serialized variable in the database

アクセスする準備ができたら:

//Get your data from the database

$unserialized = unserialize($usersFromDB);
$fname = $unserialized['fname']; //Joe

お役に立てば幸いです。

于 2012-07-23T02:31:43.313 に答える
-1

配列内のデータの量に応じて、独自の関数を記述できます。

a)このbackUpdateを確認し、レンダリングビューオプションを挿入/削除するように変更します

b)このスレッドに従ってください

c)複数のレコードを挿入するときに発生する可能性のあるトラップ

d)この関連するSOQを確認する

自分がやっていることを簡単に知っているなら、あなたはただ世話をする必要があります

  • 検証
  • レコードは関連するテーブルに存在します(FKeyが関係している場合)
  • オプションd)。単純な挿入がある場合(関連するテーブルがない場合)、考えられる答えになります
于 2012-07-23T03:39:39.583 に答える
-1

関数は非常に簡単です。これを試してください:

  function insert($table, $fields_values = array())
  {
    $q1 = join(",", array_keys($fields_values));

    $q2 = "'".join("','", array_values($fields_values))."'";

    $query = "INSERT INTO $table($q1) VALUES($q2)";

    // do your DB insert here
  }

主なトリックは、結合と array_keys / array_values を使用した配列からクエリへの変換です。

于 2012-07-23T03:10:47.537 に答える