2011-08-11 1 views
0

whereステートメントを使用して行をフェッチしようとしていますが、何らかの理由でエラーが発生します。Zend fetchRow()が動作しません

これは私が金型を()入れているライン $row = $this->getDbTable()->fetchRow("order = $order");

です。この行の前にそれが死ぬ、 それから私は死ぬ()を入れました。この行の後にdie()は実行されませんが、エラーをスローします。

このエラーは、「エラーが発生しました。アプリケーションエラー」と表示されるだけではなく、PHPエラーログには何もありません。

ヘルプ!

+0

をいただきまし起こる - > fetchAllのを();'? – ChrisA

+0

fetchAll();正常に動作します。私はfetchRow()を回避することに成功しましたが、将来のプロジェクトでは、ここでfetchRowの何が問題なのかを実際に知る必要があります。 – WingLeung

+0

'$ order'とは何ですか? – ChrisA

答えて

1

お客様のご意見では、私はwhereの部分を「正しく」実行しようとしますか?例:

$select = $this->getDbTable()->select()->where('order = ?', $order); 
$row = $this->getDbTable()->fetchRow($select); 

orderで選択する必要がある状況は何ですか。あなたが選択できる主キーがありますか?

更新:

あなたのコメントを考えると、多分直接updateを使用する:あなたは `のような単純な何かを行う場合

$table = $this->getDbTable(); 

$data = array('order' => $order+1); 

$where = $table->getAdapter()->quoteInto('order = ?', $order); 

$table->update($data, $where); 
+0

私は同じエラーが発生しています。行の前にdie() t。私は注文を編集する必要があったので、注文を選択する必要がありました。私が注文3から4に移行したいとき、私はこれらの注文を含む2行を見つけ、それを切り替えてもう一度保存する必要がありました。 fetchAll(null、 'order')を使って固定してから$ i = 0; $ object-> setOrder($ order); $ object-> getOrder()== $ order); $オブジェクト[++ $ i] - > setOrder(++ $ order); endif; $ i ++;終わり頃。 – WingLeung

+0

ああ、fetchAllを実行するだけで、2行を変更するだけでは効率的すぎるとは思われません。たぶん、アップデートを直接使うのでしょうか?更新された回答をご覧ください。 – ChrisA

+0

それは問題ありませんが、問題は2を切り替える必要があるということです。つまり、2から3の次数で行を更新するとします。次に、2から3の順序で行を変更するにはどうすればいいですか? = 3 :-) – WingLeung

関連する問題