function add($musicObj)
{
$pdo = $this->createPDO(); //$pdo已经用查询验证过,没有问题
$pdo->query("set names utf8");
$sql = "insert into [musics] ([name],[story],[image],[music],[add_date],[vote_count]) values (?,?,?,?,?,?)";
$statement = $pdo->prepare($sql);
$statement->execute(array($musicObj->name,$musicObj->story,$musicObj->image,$musicObj->music,$musicObj->add_date,$musicObj->vote_count));
echo $pdo->errorCode() //00000
}
问题:表里面没有写入数据。

解决方案 »

  1.   

    MSSQL是可以加[]的,MYSQL里似乎不可以。没有试过。
      

  2.   

    MSQL里面确实是可以加,但是不加也不行啊
      

  3.   

    你select一下看看有结果没?
    是不是没有insert的权限?
      

  4.   

    我用$pdo对象select过了,可以查到数据
      

  5.   

    1.把[]大括号换成``符号(英文输入法状态下的tab键的上面一个键);
    2.不建议把pdo的数据库操作封装成类或者函数,pdo本身就已经是个很面向对象的php扩展了,在php代码里再封装一次反而会失去pdo的灵活性和代码的可读性,在调试查错时也很繁琐;
    3.表是否有外键约束等原因导致插入失败,用pdo的errorInfo()方法输出一下错误信息数组看看。
      

  6.   

    感谢 KennyLong,但是$statement->execute()这个方法还是返回false
      

  7.   

    原来一直用sql server和access,加[]是为了屏蔽关键字
      

  8.   

    如果是mssql,那直接拿那条语句去管理器里执行,看看结果。
      

  9.   

    mysql不能用[]的。
    字符类型的加引号,
    数值的不能加。
    但,都能加“·”
      

  10.   

    去掉[]还是不行,我改成了:
    $sql = "INSERT INTO `musics` (`name`,`story`,`image`,`music`,`add_date`,`vote_count`) VALUES (?,?,?,?,?,?)";
    执行的结果是Array ( [0] => 00000 ) ,说是成功了,但是表里面就是没有数据。
      

  11.   

    表结构如下:
    mysql> desc musics;
    +------------+--------------+------+-----+---------+----------------+
    | Field      | Type         | Null | Key | Default | Extra          |
    +------------+--------------+------+-----+---------+----------------+
    | id         | int(11)      | NO   | PRI | NULL    | auto_increment |
    | name       | varchar(100) | YES  |     | NULL    |                |
    | story      | varchar(500) | YES  |     | NULL    |                |
    | image      | varchar(50)  | YES  |     | NULL    |                |
    | music      | text         | YES  |     | NULL    |                |
    | add_date   | int(11)      | YES  |     | NULL    |                |
    | vote_count | int(11)      | YES  |     | NULL    |                |
    +------------+--------------+------+-----+---------+----------------+
      

  12.   

    $pdo = $this->createPDO();
    $pdo->beginTransaction();
    $pdo->query("set names utf8");
    $sql = "INSERT INTO `musics` (`name`,`story`,`image`,`music`,`add_date`,`vote_count`) VALUES (?,?,?,?,?,?)";
    $statement = $pdo->prepare($sql);
    $r = $statement->execute(array($musicObj->name,$musicObj->story,$musicObj->image,$musicObj->music,$musicObj->add_date,$musicObj->vote_count));
    $pdo->commit();
    var_dump($r);
    var_dump($pdo->errorInfo());
    ---------------------------结果如下--------------
    bool(false) array(1) { [0]=> string(5) "00000" } 
    exit;
      

  13.   

    我平时不用prepare然后execute,而是直接组装好sql语句,直接execute