当前位置: 首页 > 面试题库 >

如何使用PDO bindParam将点数据插入mysql?

柴俊捷
2023-03-14
问题内容

细节

我想利用mysql的空间扩展,因此我试图使用bindParam将经度和纬度存储在数据类型为POINT的mysql表中。不幸的是,我不断收到错误SQLSTATE
[23000]:违反完整性约束:1048列“位置”不能为空。

我检查了经度和纬度是否有价值。因此问题必须出在我的代码上,但我看不到自己在做什么错。

这是我正在使用的代码。

$location=$latitude." ".$longitude;
$sql = "INSERT INTO my_geodata SET location = PointFromText('POINT(:location)')";
      //INSERT INTO my_geodata SET location = PointFromText('POINT(-41 12)');

try 
{
    $stmt = $dbh->prepare($sql);            
    $stmt->bindParam(':location', $location, PDO::PARAM_STR);           
    $stmt->execute();   
    $dbh = null;
}

catch(PDOException $e)
{               
    echo $error=$e->getMessage();
}

我究竟做错了什么?如何使用PDO和bindParam将经度和纬度插入到mysql表(使用POINT数据类型)中?

变异

根据AgreeOrNot的回答,实现此目标的方法略有不同

$location = 'POINT(' . $latitude . " " . $longitude . ')';    
$sql = "INSERT INTO my_geodata (location) VALUES (PointFromText(:location))";

问题答案:

请注意,参数化查询不是(简单的)字符串替换。在您的代码中,您的查询参数放在一个字符串文字中,该文字将保持不变。

尝试这个:

$location = 'POINT(' . $latitude . " " . $longitude . ')';
$sql = "INSERT INTO my_geodata SET location = PointFromText(:location)";


 类似资料:
  • 问题内容: 我正在尝试使用Java将数据插入mysql数据库。我正在使用以下代码从数据库中获取数据,并且工作正常。 为了插入数据,我尝试了上面的代码,仅替换了 与 但是它显示出一些错误。您能告诉我代码中的问题在哪里吗? 谢谢 :) 问题答案: 如果您的主键是自动递增,则可以尝试此操作;

  • 问题内容: 当前,当通过print_r()输出时,我有一个类似于以下内容的数组; 我想将此数据插入到一个表中,每个元素值都属于其各自的字段。 目前,我的php代码如下所示 注意:R_ID不是此表中的主键。 有人可以帮助我了解如何应对这种情况吗?感谢您的阅读和帮助! 问候。 问题答案: 我会避免对每个条目进行查询。

  • 问题内容: 从Python脚本向MySQL插入一些数据时,出现一个奇怪的错误。这基本上与我要插入的变量为空有关。我认为MySQL不喜欢空白变量,但是还有其他我可以将其更改为可以与我的insert语句一起使用的东西吗? 我可以成功地使用一条语句将其设置为0(如果为空),但这可能会弄乱我计划稍后在MySQL中进行的某些数据分析。有没有办法将其转换为或某种方式,以便MySQL接受但不添加任何内容? 问题

  • 问题内容: 我想在我的MySQL数据库中插入整数188和90,但以下代码不起作用: 为什么不起作用? 问题答案: 编辑 为我工作: 在MySQL表;

  • 我正在尝试通过我的应用程序将数据插入Google Cloud mysql数据库,该应用程序是通过eclipse构建在java上的。这是代码: 部署项目后,我遇到以下错误: java.sql.SQLException:没有找到适合jdbc: mysql://google/eduvitae? cloud dSqlInstance=edu-vitae1的驱动程序 谁能帮我解决这个问题。提前谢谢

  • 我的准备好的语句有问题,但我无法找出错误所在。我正在尝试将URI链接插入数据库。 错误