簡體   English   中英

mysql 更新 php 后的空值

[英]empty value after mysql update php

我在這里和谷歌做了很多研究,但我找不到這個問題的答案。

我使用以下代碼更新 MySQL 數據庫中的字段:

public function registerPubKey() {

    $stmt = $this->cn->prepare('UPDATE sb_user SET pubkey= ? WHERE email= ?');
    $exres = $stmt->execute(array($this->info["pubkey"],$this->info["email"]));
    if ($exres == false) { $resultArray["result"] = "Error registering public key"; echo json_encode($resultArray); exit; }

    $resultArray["result"] = "success"; echo json_encode($resultArray);
}

除了數據庫中的字段為空外,我確信一切正常。 我轉儲了私有變量 $info 並且它包含公鑰(公鑰是 base64 字符串)。

我注意到,如果我使用 INSERT 更改更新查詢,則值會正確插入!

可能是因為您嘗試UPDATE不存在的行。 嘗試在之前添加ON DUPLICATE KEY 請參見INSERT ... ON重復鍵更新語法 如果該行不存在,則UPDATE返回任何內容。

我遇到了類似的問題並驗證了:

  • 該行存在,並且
  • execute參數有效且正確

PDO::errorInfo()函數可以深入了解導致更新失敗的實際情況:

if (! $stmt->execute($params) ) {
    $resultArray["result"] = print_r($stmt->errorInfo(), true);
}

就我而言,我收到消息The user specified as a definer ('user'@'172.20.%.%') does not exist 由於這是恢復到不同子網的數據庫快照,因此錯誤消息是有道理的,並且用戶實際上不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM