Mevia
Mevia

Reputation: 1564

Mysql PDO, query exec is failing

i have encountered odd problem while upgreading one of my applications

i had this simple user update module that contained 4 different fields and was working just fine, today i decided to add ability to update user group and query exec is failing since then.

in db - users table has following fields:

query i was performing while update, before the upgreade was this:

UPDATE users SET username = ?, email = ?, name = ?, active = ? WHERE id = 1
Array
(
    [username] => john
    [email] => [email protected]
    [name] => John Doe
    [active] => 1
)

It was working just fine, now query i am performing is this:

UPDATE users SET username = ?, email = ?, name = ?, group = ?, active = ? WHERE id = 1
Array
(
    [username] => john
    [email] => [email protected]
    [name] => John Doe
    [group] => 2
    [active] => 1
)

This one isnt working, however if i did check errorinfo it returns array:

Array
(
    [0] => 00000
    [0] => 
    [0] => 
)

So i tried to only update group without other fields this way:

UPDATE users SET group = ? WHERE id = 1
Array
(
    [group] => 2
)

Also failed, which is weird beacuse if i copy it into phpmyadmin sql runer it is being executed properly.

The code that does exec is this:

if($this->_query = $this->_pdo->prepare($sql)) {
    if(count($params)) {
        $x = 1;
        foreach($params as $param) {
            $this->_query->bindValue($x, $param);
            $x++;
        }
    }

    if($this->_query->execute()) {
        $this->_insertid = $this->_pdo->lastInsertId();
        $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
        $this->_count = $this->_query->rowCount();
    } else {
        $this->_error = true;
    }
}

Again everything is working unless i try to update group, only then it fails, that i dont understand maybe someone does, appriciate all the tips :)

BTW maybe worth mentioning that when i INSERT instead of UPDATE it is being exec'd properly, only Update has some issues

Upvotes: 0

Views: 139

Answers (1)

P_95
P_95

Reputation: 145

Group is a reserved word in MySQL http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

Don't know if something else is also wrong in your code but try using `` around the [reserved] words:

`group`

Upvotes: 4

Related Questions