2012-11-08 70 views
0

我正在使用ZF2的應用程序。在我的應用程序中,我必須在數據庫中插入很多行(約900)。在我環路將值引入Zend Framework 2

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

我有這個表的模型,所以我第一次嘗試這樣做。這在技術上是可行的,但是這太慢了,以至於在php超時之前我幾乎不能插入一半的數據(並且我無法更改超時)。

然後,我決定使用準備好的陳述。所以我已經在循環之外準備好了,然後在循環中執行它......它甚至更慢。

因此,我決定停止使用ZF2工具,因爲它們似乎太慢而無法用於我的案例,並且我創建了自己的請求。我使用mysql,所以我可以用我所有的值做一個請求。但我找不到任何方法在界面中逃脫我的價值...

有沒有辦法做到這一點?

非常感謝您的幫助,並對我的英語不好。

+0

那你現在使用, mysql/i,PDO還是什麼? –

+0

我仍然使用ZF2,像這樣: '$語句= $表 - >銜接子>的createStatement($ SQL); $ stmt-> prepare(); $ stmt->的execute();' 唯一的區別是,我創造我自己的SQL請求,而不是使用ZF2工具來做到這一點 – Exanis

回答

4

如果要執行,你可以這樣做使用數據庫適配器生疑問:

$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(); 
+0

這繞過了很多框架組件的。 – Bluebaron

+0

那有什麼問題? –