我在这里想要做的是通过从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尝试过该解决方案,但是,我仍然无法使它起作用。

最佳答案

您正在传递字符串文字'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();

$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"}',
    )
  );
?>

您无需在$connection块内重新分配try

10-08 08:59