$paymentIDs = Yii::app()->db->createCommand('SELECT payment_id FROM client_package WHERE package_id = :pid AND payment_id IS NOT NULL')->bindValue(':pid', $pid)->queryAll();
$total = Yii::app()->db->createCommand('SELECT count(*) FROM payment WHERE id IN ('.implode(",", $paymentIDs).') AND date BETWEEN \':mS\' AND \':mE\'')->bindValue(':mS', $monthStart)->bindValue(':mE', $monthEnd)->queryScalar();
以上是我的查詢代碼。正如你所看到的,我根據一定的標準詢問了payment_id
(s)。我現在有一組數字。Yii,查詢給出數組字符串錯誤
當我執行第二個查詢,它失敗了,扔我一個錯誤
陣列到字符串轉換
我也試過這樣:
$total = Yii::app()->db->createCommand('SELECT count(*) FROM payment WHERE id IN ('.implode(",", $paymentIDs['payment_id']).') AND date BETWEEN \':mS\' AND \':mE\'')->bindValue(':mS', $monthStart)->bindValue(':mE', $monthEnd)->queryScalar();
現在,這給我一個錯誤說:
未定義指數:payment_id
有人能指出我的錯嗎?您的幫助將不勝感激。
謝謝。
請勿在參數周圍放置'\''。參數還包含什麼值? 'var_dump($ pid,$ monthStart,$ monthEnd,$ paymentIDs);'。還考慮使用chinned版本的查詢生成器'...-> select() - > where()...'或CActiveRecord和CDbCriteria – Justinas
我測試過了,它們確實返回了有效/期望的結果。基本上參數都工作正常。而且,爲什麼不在日期周圍放上'\'?是不是應該像'BETWEEN'2015-05-01'AND'2015-06-01''? '$ monthStart'和'$ monthEnd'給出的是:2015-05-01和2015-06-01,是的,沒有引號。 – NewbieCoder
因爲Yii自動添加'''變量。如果每個參數的類型都是字符串,比其他地方有錯誤,請嘗試找出引發的文件和行錯誤。 (在錯誤頁'$ line'和'$ file') – Justinas