Как предотвратить создание CodeIgniter недопустимого запроса INSERT, содержащего вызов функции SQL Server в предложении Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как предотвратить создание CodeIgniter недопустимого запроса INSERT, содержащего вызов функции SQL Server в предложении

Сообщение Anonymous »

Я сохраняю значение в базе данных, и CodeIgniter неправильно заключает мое значение в одинарные кавычки. Если мое значение заключено в одинарные кавычки, то SQL-сервер не сохраняет его и выдает ошибку.
На самом деле я получаю данные из такой таблицы
$this->db->select('priority, address, shape.STAsText() shape');
$this->db->from('POI');
$this->db->where("OBJECTID = '$id'");
$poi = $this->db->get()->row();

Следующее: мне нужно манипулировать значением формы столбца перед вставкой этих данных в другую таблицу. Для этого я получаю атрибут shape объекта $poi и манипулирую им, как показано ниже
$poi->shape = "geometry::STGeomFromText('$poi->shape',4326)";

Теперь, когда я пытаюсь сохранить этот $poi в базе данных, как показано ниже
$this->db->insert('poi_logs',$poi)

Запрос выглядит так:
INSERT INTO "poi_logs" ("priority", "address", "shape")
VALUES
(6, 'Street 40 Margalla Town Phase 2 Islamabad', 'geometry::STGeomFromText(''POINT (73.106225740025934 33.668451250424937)'',4326)');

Вы можете видеть, что он добавил одинарные кавычки вокруг значения формы, а также добавил одинарные кавычки там, где знаковые кавычки находятся внутри значения. Я хочу избежать этого. Мне нужно заявление, подобное приведенному ниже
INSERT INTO "poi_logs" ("priority", "address", "shape")
VALUES
(6, 'Street 40 Margalla Town Phase 2 Islamabad', geometry::STGeomFromText('POINT (73.106225740025934 33.668451250424937)',4326));

Отредактируется
если использую
$poi->shape = $this->db->escape("geometry::STGeomFromText('$poi->shape',4326)");

результирующий запрос выглядит так:
INSERT INTO "poi_logs" ("priority", "address", "shape" )
VALUES
(6, 'Street 40 Margalla Town Phase 2 Islamabad', '''geometry::STGeomFromText(''''POINT (73.106225740025934 33.668451250424937)'''',4326)''')


Подробнее здесь: https://stackoverflow.com/questions/369 ... -a-sql-ser
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»