1

I'm starting with mysql prepared statements and I can't advance due to an error that I don't understand. Here's my function to update de db:

public function updateUserData($user_label,$user_alliance, $score, $rank, $timestamp, $user_id, $db_object){


    $sql='UPDATE users SET label = ?, alliance = ?,  points = ?, position = ?, modified = ?,  WHERE user_id = ?';

    $label = $user_label;
    $alliance = $user_alliance;
    $points = $score;
    $position = $rank;
    $modified = $timestamp;
    $user_id_q = $user_id;

    $stmt = $db_object->prepare($sql);
    if($stmt === false) {
      trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $db_object->error, E_USER_ERROR);
    }

    $stmt->bind_param('ssiiii',$label,$alliance,$points,$position,$modified,$user_id_q);

    /* Execute statement */
    $stmt->execute();

    echo $stmt->affected_rows;

    $stmt->close();

}

Here's how I use it:

//Get user Data
$user = new user();
$page_clasif = $user->getPagClasif($ch,$url_clasif);
$user_label = $user->findPlayerName($page_clasif);
$user_alliance = $user->findAllianceName($page_clasif);
$rank = $user->findRank($page_clasif);
$score = $user->findScore($page_clasif);
$user_id = $user->findPlayerId($page_clasif);
$version = $user->findVersion($page_clasif);
$user_universe = $user->findUniverse($page_clasif);

//Get install date as timestamp
$core = new core();
$timestamp = $core->dateAsTimestamp();
//Update User
$user->updateUserData($user_label,$user_alliance,$score,$rank,$timestamp,$user_id,$conn);

Here's the error:

 PHP Fatal error:  Wrong SQL: UPDATE users SET label = ?, alliance = ?,  points = ?, position = ?, modified = ?,  WHERE user_id = ? Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE user_id = ?'

Any ideas? Thanks in advance.

1
  • 1
    You have too many ,s. Commented Jan 8, 2014 at 14:57

1 Answer 1

3

You have a superfluous comma before the WHERE keyword:

$sql='UPDATE users SET label = ?, alliance = ?,  points = ?, position = ?, modified = ?,  WHERE user_id = ?';
//                                                                 remove this comma --^
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks a lot, rookie mistake. ): shame on me.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.