MySQL:Update语句显示没有错误,但没有任何改变

I have a connection to a database and want to update(override) an existing string called profile by a new one.

$uid = 1;
$serProfile = 'abc';

$sql = 'UPDATE
            Users
        SET
            profile = ?
        WHERE
            id = ?';
$stmt = $db->prepare($sql);
if (!$stmt) { safeExit($db->error, 'msgError'); }
$stmt->bind_param('si', $serProfile, $uid);
if (!$stmt->execute()) { safeExit($stmt->error, 'msgError'); }
$stmt->close();

However, although the variables exist, the fields exist and there are no errors, the values in the database do not get changed. How to resolve this behaviour?

Test this one

$sql = 'UPDATE Users SET  profile = :profile WHERE id = :id';
$stmt = $db->prepare($sql);
$stmt->execute(array('id'=>$uid,'profile'=>$serProfile));