2014-07-18 117 views
0

而upgreading我的应用程序之一Mysql的PDO,查询EXEC失败

  • 脚本语言,我也遇到了奇怪的问题是PHP
  • 数据库MYSQL
  • 我使用PDO类处理

我有这个简单的用户更新模块,其中包含4个不同的领域,并工作得很好,今天我决定增加更新用户组和查询可执行文件失败后的能力。

在分贝

- 用户表具有以下字段:

  • 用户名(VARCHAR 50)
  • 密码(VARCHAR 64)
  • 电子邮件(VARCHAR 128)
  • 名称(VARCHAR 50)
  • group(int 1)
  • active(int 1)

查询我在表演的同时更新,在upgreade是在此之前:

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

它工作得很好,现在查询我正在执行是这样的:

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

这一个心不是工作,但是如果我没有检查ERRORINFO它返回数组:

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

于是,我就只更新组没有其他领域是这样的:

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

也失败了,这是奇怪的,因为如果我将它复制到phpmyadmin sql runer它正在正确执行。

,做高管的代码是这样的:

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; 
    } 
} 

再次一切工作,除非我尝试更新组,只有失败的话,那我不明白,也许有人不,所有并欣赏提示:)

顺便说一句,也许值得一提的是,当我INSERT代替UPDATE它被正确exec'd,只更新有一些问题

+0

使用http://php.net/manual/ en/mysqli.error.php – Phantom

+0

我不认为那个mysqli命令可以用于PDO类 – Mevia

+0

然后使用:http://php.net/manual/en/pdo.errorinfo。php – Phantom

回答

4

集团是一家保留字在MySQL http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

不知道别的东西也错在你的代码,但试图利用周围[转载]字``

`group` 
+1

*“组是一个被禁止的词”* - 一个严厉的词的位。它不是“禁用”的,一旦可以使用它,但更多的是“保留关键字”。 –

+0

什么wouldnt它或被称为like,家伙是辉煌的:D它已经:)它是奇怪的,虽然当我插入或选择并说组它的工作,如果我更新它需要这些标记周围...无论哪种方式谢谢你帮助队友:) – Mevia