php – 我可以进行包含几何函数的参数化查询吗?

我有一个SQL查询,如下所示:

$stmt = $dbh->prepare("INSERT INTO Places (name, latlng)
 VALUES (?, GeomFromText('POINT(? ?)'))");
$stmt->bindValue(1, $_POST['name']);
$stmt->bindValue(2, $_POST['lat']);
$stmt->bindValue(3, $_POST['lng']);
$stmt->execute();

我收到了这个错误:

‘PDOException’ with message ‘SQLSTATE[23000]: Integrity constraint
violation: 1048 Column ‘latlng’ cannot be null’

latlng列的类型为NOT NOT NULL.由于插入适用于以下内容,为什么它会导致为上面插入NULL?

"INSERT INTO Places (name, latlng)
 VALUES (?, GeomFromText('POINT(".$_POST['lat']." ".$_POST['lng'].")'))"

所以,我的问题是,我可以进行包含几何函数的参数化查询吗?如果是这样,怎么样?如果没有,为什么?

解决方法:

在您的查询中,POINT(??)只是一个字符串,而不是一个函数.你不能只是参数化字符串的一部分,你需要参数化整个字符串:

$stmt = dbh->prepare("INSERT INTO Places (name, latlng) VALUES (?, GeomFromText(?))");
$stmt->bindValue(1, $_POST['name']);
$stmt->bindValue(2, 'POINT('.(float)$_POST['lat'].' '.(float)$_POST['lng'].')');
上一篇:MyBatis配置文件中的标签mappers的子标签mapper的url属性


下一篇:MyBatis探究-----核心配置文件mybatis-config.xml中配置mappers的几种方式