Я использую symfony 1.4.10 и пытаюсь сделать довольно сложную INSERT в таблицу MySQL.Я использую геометрические функции MySQL для хранения набора координат широты и долготы в форме, в которой я могу легко выполнять поиск близости (это просто фон, не очень актуально).
Вот что мне нужноделать в сыром SQL:
INSERT INTO video_geo (vimeo_vid, coord)
VALUES ( 15702113, GeomFromText( 'POINT(-122.415 37.7792)' ));
ОБНОВЛЕНИЕ: Я почти уверен, что проблема заключается в параметре "несоответствие" с POINT.POINT принимает два «params», lat и lon, но это один столбец в БД.Не уверен, как применить к нему подготовленное утверждение (сколько знаков вопроса и что дать, строка?)
Я пытаюсь использовать «необработанный запрос» с Doctrine, но не могу найтислишком много подробной документации по нему (только очень простые примеры, из которых трудно экстраполировать).
Это моя последняя попытка проб и ошибок:
<?php
$connection = Doctrine_Manager::connection();
$query = "INSERT INTO video_geo (vimeo_vid, coord) VALUES( ? , GeomFromText( 'POINT( ? ? )' ));";
$statement = $connection->prepare($query);
$statement->bindValue(1, $vimeoID);
$statement->bindValue(2, $lat);
$statement->bindValue(3, $lon);
$statement->execute();
?>
Это приводит к следующей ошибке:
В журнале sf:
28 октября 22:58:14 symfony [info] {Doctrine_Connection_Statement} execute: INSERT INTO video_geo (vimeo_vid,координировать) ЗНАЧЕНИЯ (?, GeomFromText ('POINT (??)'));- ()
Исключено исключение:
Doctrine_Connection_Mysql_Exception 'с сообщением' SQLSTATE [HY093]: недопустимый номер параметра: число связанных переменных не соответствует числу токенов 'в...
Я думаю, что проблема с POINT ... я должен передать один параметр?Я не уверен, что это за тип.
Пример в руководстве по Symfony не показывает, как делать подготовленные операторы, я думаю, что это информация, которую я ищу здесь.
Любая помощь приветствуется!Спасибо ...
Питер