SQL 删除双精度类型

SQL delete type double

我在使用 sql 时遇到了一些问题...下面有一个有效和无效的示例。我对它们进行了硬编码,以便更容易看到。

$deleteData = $con->prepare("DELETE FROM markers WHERE sid=? AND user_id=? AND lat=? AND lng=?");
$deleteData->bind_param("iidd", $sid, $user_id,$lat,$lng);  

$sid= '239';
$user_id = '2';
$lat = '39.724869';
$lng = '-91.400116';

$deleteData -> execute(); 

某些原因,当我尝试在 bind_param 中使用双精度类型删除时,它不起作用。有什么建议么?我在 lat lng 周围用或不用 '' 改变了它,仍然不起作用。

如果我把它改成下面,它删除就好了。

$deleteData = $con->prepare("DELETE FROM markers WHERE sid=? AND user_id=?);
$deleteData->bind_param("ii", $sid, $user_id);  

$sid= '239';
$user_id = '2';

$deleteData -> execute(); 

$blog_id = '239'; 替换为 $sid = '239';,因为这是您在 bind_param() 语句中使用的变量名称。

首先你在第二个例子中有语法错误(缺少字符")。

而且你没有分配 $sid 变量。

然后我有一个有点愚蠢的问题。您知道吗,变量 $blog_id, $user_id ... 等的赋值必须在方法 $deleteData->bind_param() 调用之前进行?

另外,不要忘记,当您比较 2 个实数值时,您还应该增加一些公差,所以请尝试:

$deleteData = $con->prepare("DELETE FROM markers WHERE sid=? AND user_id=? AND ABS(lat - ?) < 0.0000001 AND ABS(lng - ?) < 0.0000001");