0

ZF2を使用したアプリケーションに取り組んでいます。私のアプリケーションでは、データベースに多くの行(約900)を挿入する必要があります。

私はこれのためのテーブルモデルを持っているので、私は最初にやろうとします:

$table->insert(array('x' => $x, 'y' => $y));

私のループで。これは技術的には機能しますが、これは非常に遅いため、phpのタイムアウト前にデータの半分を挿入することはほとんどできません(タイムアウトを変更することはできません)。

次に、準備されたステートメントを使用することにしました。だから私はそれをループの外で準備し、それから私のループでそれを実行しました...それはさらに遅くなりました。

そこで、私の場合は遅すぎるように思われるZF2ツールの使用をやめることにし、独自のリクエストを作成しました。私はmysqlを使用しているので、すべての値を使用して1つのリクエストを実行できます。しかし、どのインターフェイスにも値をエスケープするメソッドが見つかりません...

これを行う方法はありますか?

あなたの助けに感謝し、私の貧弱な英語をお詫びします。

4

2 に答える 2

6

生のクエリを実行する場合は、データベースアダプタを使用して実行できます。

$sql = 'SELECT * FROM '
    . $adapter->platform->quoteIdentifier('users')
    . ' WHERE ' . $adapter->platform->quoteIdentifier('id') . ' = ' . $adapter->driver->formatParameterName('id');

/* @var $statement \Zend\Db\Adapter\Driver\StatementInterface */
$statement = $adapter->query($sql);
$parameters = array('id' => 99);

/* @var $results Zend\Db\ResultSet\ResultSet */
$results = $statement->execute($parameters);

$row = $results->current();
于 2013-01-23T11:16:42.467 に答える
0

トランザクションを使用する:http ://dev.mysql.com/doc/refman/5.0/en/commit.html よりも実行時間を短縮するのに役立ちます

于 2013-10-10T18:53:19.117 に答える