4

私は ZF2 を初めて使用し、tableGateway を使用してデータベース内のエントリを管理および更新しようとしています。問題なくアイテムを選択して更新できますが、挿入するとエラーが発生します。tableGateway クラスはその場でクエリを作成するので、どうすればクエリ自体を確認できますか?

$this->tableGateway->insert($data);

実行中にエラーが発生しました。後でもう一度試してください。追加情報: Zend\Db\Adapter\Exception\InvalidQueryException

ファイル:

/[redacted]/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Statement.php:220

メッセージ:

Statement could not be executed
4

4 に答える 4

5

@ zdenek-machekの回答に対するいくつかの通知:

1)データベースクエリのプロファイルを作成するには、BjyProfilerモジュールもインストールする必要があります。

2)(PDOを使用している場合はスキップ)BjyProfiler前回使用したときに、mysqli接続に問題がありました(buffer_resultsオプションがクラスに渡されませんでしたProfilingStatement)。たぶん、今は修正されているか、間違った方法で設定しましたが、私のパッチは、BjyProfiler / src / BjyProfiler / Db / Adapter/ProfilingAdapter.phpでこのパラメーターを手動で渡すことです。

case 'Zend\Db\Adapter\Driver\Mysqli\Mysqli':
    $statementPrototype = new Driver\Mysqli\ProfilingStatement($this->options['buffer_results']);
    break;

3)ZendDeveloperToolsクエリの数を表示しますが、リストは表示しません。ページの下部にリストするために、view / zend-developer-tools / toolbar/toolbar.phtmlを次のように変更しました。

<!-- END Zend Developer Toolbar -->
<?php
$queryProfiles = $this->getHelperPluginManager()->getServiceLocator()
    ->get('Zend\Db\Adapter\Adapter')->getProfiler()->getQueryProfiles();

echo '<ol>';
foreach($queryProfiles as $queryObj)
{
    $query = $queryObj->toArray();
    echo '<li>';
    echo '<b>' . ($query['elapsed']*1000) . '</b> ms<br/>';
    echo $query['sql'];
    if(count($query['parameters']))
    {
        echo '<br/><i>Parameters:</i> ';
        $list = array();
        foreach($query['parameters'] as $key => $value)
            $list[] = '?'. $this->escapeHtml($key)
                      ."='". $this->escapeHtml($value) ."'";
        echo implode(', ', $list);
    }
    echo '</li>';
}
echo '</ol>';
于 2012-11-19T07:11:35.830 に答える
2

db クエリを表示する非常に洗練された方法は、zend-developer-tools を使用することです。

それを使用する最も簡単な方法は、モジュールを composer.json ファイルに追加してインストールすることです

..... "repositories": [ { "type": "composer", "url": "http://packages.zendframework.com/" } ], "require": { "php": ">=5.3.3", "zendframework/zend-developer-tools": "dev-master" }

ドキュメントを見る

于 2012-11-08T23:20:28.673 に答える