【问题标题】:PHP - update query using postman return success but not update the value in databasePHP - 使用邮递员更新查询返回成功但不更新数据库中的值
【发布时间】:2017-08-30 15:53:46
【问题描述】:

我已阅读此posthere 但尚未找到解决方案

我有这样的功能更新:

 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时,值没有改变,

我错过了什么吗?

【问题讨论】:

  • 如果没有找到记录,UPDATE 语句也成功。检查受影响的行数
  • @Jens 我检查了受影响的行数,但仍显示旧值
  • 我猜受影响的行数是 0,为什么你可以阅读我的答案

标签: php mysql pdo


【解决方案1】:

绑定参数的顺序必须与查询中的顺序相同。
在绑定参数时,使用sstringiintegerddecimalbblob

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; 
}

【讨论】:

  • 好资料先生,我很想知道char里面的"标记是什么意思。 +1,但我不知道为什么当我没有更改 "sss" 时,脚本仍然更新了值
  • 为什么当我没有更改“sss”时,脚本仍然更新了值,因为 mysql 会自动将字符串转换为 int。和你写的一样where id='1'
【解决方案2】:

UPDATE 如果没有找到记录,则语句也成功。检查受影响的行数。

您绑定的订单或pastameter 是importend。改为:

$stmt = $this->con->prepare("UPDATE api SET name = ?, genre = ? WHERE id = ?");
 $stmt->bind_param("ssi", $name, $genre,$id);

在您的代码中,id 将绑定到第一个问号,因此绑定到 name 等等。

【讨论】:

  • 我虽然将字段放在绑定中的位置并不重要,但我需要按顺序插入参数。谢谢,我现在无法标记为答案
  • 因为你的名声比@Spectarion最高,我想我会给他打分的,:),还是谢谢
  • @RedRiver 你不应该看 Reputation 你应该考虑哪个答案更有帮助.. 但无论如何都可以
猜你喜欢
  • 2016-03-23
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多