我的功能更新如下:
public function updateArtist($id, $name, $genre){
$stmt = $this->con->prepare("UPDATE api SET name = ?, genre = ? WHERE id = ?");
$stmt->bind_param("sss",$id, $name, $genre);
if($stmt->execute())
return true;
return false;
}
,更新索引为:
case 'updateartist':
if(isset($_POST['id']) && isset($_POST['name']) && isset($_POST['genre'])){
$db = new DbOperation();
if($db->updateArtist($_POST['id'], $_POST['name'], $_POST['genre'])){
$response['error'] = false;
$response['message'] = 'Artist updated successfully';
}else{
$response['error'] = true;
$response['message'] = 'Could not update artist';
}
}else{
$response['error'] = true;
$response['message'] = 'Required Parameters are missing';
}
break;
我正在使用邮递员尝试,这里是邮递员的输出,显示成功消息:
但是当我检查mysql时,值不会改变,
我错过了什么吗?
答案 0 :(得分:2)
绑定参数的顺序必须与查询中的顺序相同
对s
使用string
,i
使用integer
,d
使用decimal
,b
使用blob
参数。
public function updateArtist($id, $name, $genre){
$stmt = $this->con->prepare("UPDATE api SET name = ?, genre = ? WHERE id = ?");
$stmt->bind_param("ssi", $name, $genre, $id);
if($stmt->execute())
return true;
return false;
}
答案 1 :(得分:1)
UPDATE
如果没有找到记录,语句也会成功。检查受影响的行数。
您绑定的订单或pastameter是importend。改为:
$stmt = $this->con->prepare("UPDATE api SET name = ?, genre = ? WHERE id = ?");
$stmt->bind_param("ssi", $name, $genre,$id);
在您的代码中,id将绑定到第一个问号,因此它将绑定到name
,依此类推。