/ / Nie znaleziono kolumny: 1054 Nieznana kolumna „Tablica” w „klauzuli porządku” yii - php, mysql, yii

Nie znaleziono kolumny: 1054 Nieznana kolumna "Tablica" w "klauzuli porządku" yii - php, mysql, yii

Próbuję wykonać zapytanie do bazy danych przy użyciu CDbCriteria w Yii 1. To co robię to:

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

I to jest ten $dealIdArr i nie jest pusty:

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

Ale po uruchomieniu skryptu zwraca błąd:

CDbCommand nie wykonał instrukcji SQL: SQLSTATE [42S22]: Nie znaleziono kolumny: 1054 Nieznana kolumna „Tablica” w „klauzuli kolejności”.

Nie mogę zrozumieć, co jest z tym nie tak? Jakaś pomoc?

Odpowiedzi:

2 dla odpowiedzi № 1

Obecnie dodajesz tablicę do obu warunków. Nie znam się zbyt dobrze na Yii, ale jestem całkiem pewien, że oczekuje ciągu dla kolejności - a nie tablicy.

Możesz implode() przekonwertować go na ciąg.

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

Ponieważ twoja tablica zawiera obecnie tylko liczby całkowite (3 i 2), nie musisz tego cytować - ale jeśli tablica z jakiegokolwiek powodu zawiera ciągi, musisz je zacytować w MySQL, wykonując

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

Zwróć uwagę na dodane pojedyncze cudzysłowy.

Kiedy spróbujesz użyć tablicy jako łańcucha, PHP po prostu wypisze „Array”, co właśnie widzisz. A ponieważ nie jest cytowany, MySQL uważa, że ​​jest kolumną, a nie łańcuchem.