我的php代码有什么问题?
有人能告诉我这个密码有什么问题吗我的php代码有什么问题?,php,mysql,Php,Mysql,有人能告诉我这个密码有什么问题吗 protected function update() { if(@$_POST['lat'] == "" && @$_POST['lng'] == "" && @$_POST['bool'] == "") return array("message"=>"lat, lng is missing"); $lat =
protected function update() {
if(@$_POST['lat'] == "" && @$_POST['lng'] == "" && @$_POST['bool'] == "")
return array("message"=>"lat, lng is missing");
$lat = $_POST['lat'];
$lng = $_POST['lng'];
$bool = $_POST['bool'];
$sql = "UPDATE markers SET bool='$bool' WHERE lat=? AND lng=?";
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("sss",$lat,$lng,$bool);
$stmt->execute();
$stmt->close();
$mysqli->close();
}
我得到这个错误:
mysqli_stmt::bind_param():
Number of variables doesn't match number in prepared statement?
in line 96.($stmt->bind_param("sss",$lat,$lng,$bool);
但我不知道为什么?因为看起来这句话应该是对的 您的SQL语句最终是:
$sql = "DELETE FROM markers WHERE lat=? AND lng=?";
它只有2个占位符,您要传递4个值来绑定_param()。首先,您需要删除带有
DELETE
的行,这只是覆盖$sql
的第一个定义
然后,您应该在更新中用?
替换$bool
最后,您应该按照参数在查询中出现的顺序将参数传递给bind_param,因此$bool,$lat,$lng
替换此参数
$stmt->bind_param("sss",$lat,$lng,$bool);
借
您想运行哪个$sql
,更新
还是删除
?delete
是变量中唯一的一个。错误消息告诉您想要的是错误的。看看您的查询--?
(参数占位符)是如何存在的?您要将多少个参数传递给bind\u parm
?嗯,3!=2.即使您将代码复制到了某个地方,也应该尝试理解它的作用。IHMO,很明显,您只是希望它能够工作。“我的php代码有什么问题?”-这总是一开始就很好。哦,我已经删除了Delete语句。还是同样的错误(
$stmt->bind_param("ss",$lat,$lng);