Запрос с использованием активной записи CodeIgniter не возвращает значение ... - PullRequest
1 голос
/ 23 декабря 2011

Вот код, который я запускаю.

$query = $this->db->query("DECLARE @tmp TABLE (ContactID UNIQUEIDENTIFIER)
INSERT INTO tblCD (" . ArrayToString($fieldsCDArray) . ")
OUTPUT Inserted.ContactID INTO @tmp
VALUES (" . ArrayToDBString($valuesCDArray) . ")
INSERT INTO tblCCO (ContactID, " . ArrayToString($fieldsCCOArray) . ")
VALUES ((SELECT ContactID FROM @tmp), " . ArrayToDBString($valuesCCOArray) . ")
SELECT ContactID FROM @tmp");

$result = $query->row(); 

Я запустил $ this-> db-> last_query (), чтобы убедиться, что код SQL действительно работает на сервере SQL. В итоге возвращается один ряд, как и ожидалось. Но я ничего не получаю от CodeIgniter с вышеуказанным кодом. Я также попытался запустить его с помощью result () и result_array () только для ударов, и все еще ничего.

Разве CodeIgniter не нравится возвращать результаты запроса с более чем одним оператором или мне нужно получить результат другим способом? (Для всех, кто спрашивает, я просто пытаюсь получить последний вставленный идентификатор, но это GUID, поэтому я не могу использовать $ this-> db-> insert_id ().

Любая помощь или предложения будут оценены. Спасибо.

Кроме того, игнорируйте методы ArrayToDBString (), это определенно не проблема, поскольку, как я уже сказал, я напечатал последний запрос и успешно провел его через SQL. Кроме того, результат, который я получаю при запуске через SQL, - это один столбец с именем ContactID.

1 Ответ

1 голос
/ 23 декабря 2011

Я повторяю $result и ничего не отображается

row() возвращает объект, а не строку, даже если вы выбрали только один столбец.Чтобы получить доступ к значению, вам все равно нужно явно вызвать его:

$record = $query->row();
echo $record->ContactID;

Если это все еще не работает, попробуйте выполнить ваши запросы по одному, вместо того, чтобы передавать все их на $this->db->query() сразу.

... и, как всегда, включите отчеты об ошибках с помощью error_reporting(E_ALL) и используйте что-то вроде var_dump() или print_r() для отладки переменных вместо echo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...