0

我在这里尝试做的是通过从 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;
        }

这是视图文件中的 Ajaxbutton:

 <?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 的解决方案,但是,我仍然无法让它发挥作用。

4

1 回答 1

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

    $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. 第二个 ( $url) 参数CHtml::ajaxSubmitButton应该是一个字符串,而不是一个数组:

    <?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块内不必要地重新分配。

于 2012-05-28T19:06:30.500 回答