Я пытаюсь вставить строку в массив целых чисел, используя phpGrid с базой данных PostgreSQL. Мне пришлось преобразовать массив в строку, чтобы убрать скобки при отображении данных в сетке для просмотра, но когда я пытаюсь преобразовать строку обратно в массив после добавления поля, он не конвертируется в формат {1,2 , 3,4}. Я использую функцию string_to_array, которую предлагает для этого PostgreSQL. Вот код, который я использую:
$dg = new C_DataGrid("SELECT array_to_string(field, ', ') as field_to_string FROM tblname");
Это работает как ожидалось (удаляет {} из отображаемых данных), но когда я пытаюсь вставить, этот запрос выглядит следующим образом:
INSERT INTO tblname (field_to_string) VALUES ('1,2,3,4');
и это то, что я пытаюсь вставить (преобразовать в массив)
$arrFields['field_to_string'] = "string_to_array('" . $arrFields['field_to_string'] . "', ',')";
$sqlCrud = $db->db->GetInsertSQL($rs, $arrFields, get_magic_quotes_gpc(), true);
Любая помощь будет оценена.
Благодарю.
Можете ли вы повторить sqlCrud и узнать оператор SQL Insert, установив его DEBUG установить в истину? Вероятно, в операторе вставки произошла ошибка во время преобразования.
Ваш PostgreSql должен выглядеть примерно так:
INSERT INTO tblname(field_to_string) VALUES ('{1,2,3,4}'::varchar[])
Вы можете проверить PostGreSql с примерами преобразования массива в строку здесь: http://www.postgresonline.com/journal/archives/228-PostgreSQL-Array-The-ANY-and-Contains-trick.html
Других решений пока нет …