2017-05-11 101 views
-1

我試圖使用Yii 1中的CDbCriteria查詢數據庫。我做的是:未找到列:1054'訂單子句'中的未知列'Array'yii

$criteria->addInCondition('t.id', $dealIdArr); 
$criteria->order = "FIELD(t.id, $dealIdArr)"; 

這是$dealIdArr,它不是空:

Array ([0] => 3 [1] => 2) 

但運行腳本的時候,它會返回錯誤:

CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'order clause'.

我米不明白這是什麼問題?任何幫助?

+1

我不知道你有什麼triyng做的,但數組的字符串表示字'Array' –

回答

2

您目前正在爲這兩種情況添加一個數組。我對Yii不太熟悉,但我確信它期望一個字符串 - 而不是一個數組。

你可以implode()它將其轉換爲一個字符串。

$dealIdStr = implode(", ", $dealIdArr); 
$criteria->addInCondition('t.id', $dealIdArr); // You can use array here 
$criteria->order = "FIELD(t.id, $dealIdStr)"; // This expects a string 

當你的陣列目前僅包含整數(3和2),你不需要引述 - 但如果因任何原因數組包含字符串,你需要讓他們在MySQL做

引述
$dealIdStr = implode("', '", $dealIdArr); 
$criteria->order = "FIELD(t.id, '$dealIdStr')"; 

注意添加的單引號。

當您嘗試將數組作爲字符串使用時,PHP將僅打印「Array」,這就是您現在看到的內容。而且由於沒有引用,MySQL認爲它是一個專欄,而不是一個字符串。

+0

感謝您的提示答案,知道了。必須傳遞字符串而不是數組。我的錯! – Saani

相關問題