Zend Framework 2 でクエリとして SQL 文字列を実行する方法はありますか?
私はそのような文字列を持っています:
$sql = "SELECT * FROM testTable WHERE myColumn = 5"
今度は、この文字列を直接実行したいと思います。
Zend Framework 2 でクエリとして SQL 文字列を実行する方法はありますか?
私はそのような文字列を持っています:
$sql = "SELECT * FROM testTable WHERE myColumn = 5"
今度は、この文字列を直接実行したいと思います。
次のように、SQL文字列をdbアダプタに渡すだけです。
$resultSet = $adapter->query($sql, \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
そして、パラメータを渡したい場合:
$sql = "SELECT * FROM testTable WHERE myColumn = ?";
$resultSet = $adapter->query($sql, array(5));
編集: query メソッドは常に結果セットを返すとは限らないことに注意してください。その結果セットが query( SELECT
) を生成する場合、それはそれ以外の\Zend\Db\ResultSet\ResultSet
場合 ( INSERT
、UPDATE
、DELETE
、...) を返し、 を返します\Zend\Db\Adapter\Driver\ResultInterface
。
2 番目のパラメータを空のままにすると、\Zend\Db\Adapter\Driver\StatementInterface
実行可能な が得られます。
use Zend\Db\Sql\Sql;
use Zend\Db\Adapter\Adapter;
$dbAdapterConfig = array(
'driver' => 'Mysqli',
'database' => 'dbname',
'username' => 'dbusername',
'password' => 'dbuserpassword'
);
$dbAdapter = new Adapter($dbAdapterConfig);
$sql = new Sql($dbAdapter);
$select = $sql->select();
$select->from('testTable');
$select->where(array('myColumn' => 5));
$statement = $sql->prepareStatementForSqlObject($select);
$result = $statement->execute();
S. ドキュメント: Zend\Db → Zend\Db\Sql