ajaxSubmitButton:INSERT问题

时间:2012-05-28 18:53:24

标签: php mysql ajax yii

我在这里要做的是通过从AjaxSubmitButton传递它们并调用控制器/动作来向表中插入一些值。

首先是控制器操作

public function actionAddit()
{
        $connection = yii::app()->db;
        $transaction=$connection->beginTransaction();
        try 
        {    
        $connection = yii::app()->db;
        $sql1 = "INSERT INTO apTracker (id, title,createdDate,owner) VALUES(:id, :title,:createdDate,:owner)";


            $command=$connection->createCommand($sql1);

            $command->bindValue(":id", $_POST['id']);
            $command->bindValue(":title", $_POST['title']);
            $command->bindValue(":createdDate", new CDbExpression('NOW()'));
            $command->bindValue(":owner", $_POST['o']);

                $command->execute();
                $transaction->commit();
        }       
        catch(Exception $e)
        {
            $transaction->rollBack();
            $this->refresh;
        }

这是视图文件中的Ajax按钮:

 <?php echo CHtml::ajaxSubmitButton('Yes!',          
        array('/entry/addit'), 
        array(
                'type'=>'POST',
                'data' => array('id' => '1','title' => 'Untitled','o'=>'6'),
                'success' => 'js:function(){window.location="site/message"}', 
        ));?>

嗯,我不知道究竟是什么,但它不起作用。但是,如果我删除命令bindvalue并在sql查询本身中硬编码一些值,它就可以工作。所以,我猜测问题可能是将值从AjaxSubmit部分传递给控制器​​。我在这里做错了什么,但不能确切地知道是什么。有帮助吗?

编辑:好的,抱歉编辑混乱,问题又恢复原状。

我已经尝试过eggyal的解决方案,但是,我仍然无法让它工作。

1 个答案:

答案 0 :(得分:1)

  1. 您将字符串文字'NOW()'作为:createdDate参数传递,该参数无效。只需在SQL中使用NOW()

    $sql1 = '
      INSERT INTO apTracker (id, title, createdDate, owner) VALUES
        (:id, :title, NOW(), :owner)
    ';
    
    $command = $connection->createCommand($sql1);
    
    $command->bindValue(':id',    $_POST['id']);
    $command->bindValue(':title', $_POST['title']);
    $command->bindValue(':owner', $_POST['o']);
    
    $command->execute();
    
  2. CHtml::ajaxSubmitButton的第二个($url)参数应该是一个字符串,而不是一个数组:

    <?php
      echo CHtml::ajaxSubmitButton(
        'Yes!',          
        '/entry/addit', 
        array(
          'type'    => 'POST',
          'data'    => array('id' => '1', 'title' => 'Untitled', 'o'=>'6'),
          'success' => 'js:function(){window.location="site/message"}', 
        )
      );
    ?>
    
  3. 您无需在$connection区块内重新分配try