gpt4 book ai didi

mysql - 在 Symfony 1.4.x 中使用 Doctrine 的复杂插入(mysql 几何点)

转载 作者:行者123 更新时间:2023-11-29 03:11:18 25 4
gpt4 key购买 nike

我正在使用 symfony 1.4.10,并尝试在 MySQL 表中执行相当复杂的 INSERT。我正在使用 MySQL 的几何函数以一种可以轻松进行邻近搜索的形式存储一组纬度、经度坐标(这只是背景,并不太相关)。

这是我想在原始 SQL 中执行的操作:

INSERT INTO video_geo (vimeo_vid, coord) 
VALUES ( 15702113, GeomFromText( 'POINT(-122.415 37.7792)' ));

更新:我很确定问题是参数与 POINT“不匹配”。 POINT 有两个“参数”,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 日志中:

Oct 28 22:58:14 symfony [info] {Doctrine_Connection_Statement} execute : INSERT INTO video_geo (vimeo_vid, coord) VALUES( ?, GeomFromText( 'POINT( ? ? )' )); - ()

异常转储:

Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in...

我认为问题出在 POINT 上……我应该传递一个参数吗?我不确定是什么类型。

symfony 手册中的示例没有显示如何执行准备好的语句,我认为这就是我在这里寻找的信息。

感谢任何帮助!谢谢...

彼得

最佳答案

Doctrine 使用 PDO 进行 MySQL 查询。

我不太确定,但我认为您的问题是 POINT() 函数中的“两个问号”。

这是来自 PDO 文档:... placeholder must be used in the place of the whole value ..

所以你可以试试:

$query = "INSERT INTO video_geo (vimeo_vid, coord) VALUES( ? , GeomFromText( 'POINT( ? )' ));";
$statement = $connection->prepare($query);
$statement->bindValue(1, $vimeoID);
$statement->bindValue(2, $lat . " " . $lon);

作为一个简短的提示,我建议使用命名参数:-)

关于mysql - 在 Symfony 1.4.x 中使用 Doctrine 的复杂插入(mysql 几何点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com