は、私はそれぞれのuser_id
ためuser_token
を更新し、この機能を持っている:この行ではデータベースを更新する前に変数のタイプをチェックしてください。 PHP
public function setUserToken($userId, $userToken)
{
$stmt = $this->conn->prepare("UPDATE $this->dbname.user SET user_token=:user_token WHERE user_id=:user_id;");
try {
$stmt->bindParam(':user_token', $userToken, PDO::PARAM_STR, 70);
$stmt->bindValue(':user_id', "sdf", PDO::PARAM_INT);
$result['success'] = $stmt->execute();
$result['message'] = "Successfully updated user_token for user_id " . $userId;
} catch (PDOException $e) {
$result['success'] = false;
$result['message'] = "Failed to update user_token with error: " . $e->getMessage();
}
return $result;
}
: $stmt->bindValue(':user_id', "sdf", PDO::PARAM_INT);
とtry-catch
操作を、私はuser_id
が整数でない場合は、エラーをスローするようにしようとしています。
ただし、失敗します。 PHPが自動的に "sdf" Stringを値0の整数に変換するからです。
ここでの解決策は何ですか?
関数is_numericを使用して、user_idが数値であるかどうかをチェックして次の操作を実行します – Shibon
PHPは文字列 "sdf"を値0のINTに変換するので失敗します。 'PDO :: PARAM_INT'を使ってINTにするuser_idがテーブルのプライマリキーである場合は、INTとなる可能性が高いため、常に文字列ではなくINTを渡す必要があります。 Shibonが述べるように、 'if(is_numeric($ userId)){//はい}'を使って変数をチェックしてから先に進むことができます。 – Blinkydamo