【问题标题】:how to execute sql query in yii?如何在yii中执行sql查询?
【发布时间】:2014-06-21 17:55:47
【问题描述】:

我想在 Yii 的视图页面中执行查询,这是我的代码:

$connection=Yii::app()->db;
$connection->active=true;
$sql = "insert into news(idNews, news, display) values('', 'anything', 0)";
$command=$connection->createCommand($sql);
$command->execute();

但是什么也没发生,我的代码有什么错误?

【问题讨论】:

  • 我不知道 YII,但乍一看 createCommand 返回一个正常的 PDO。所以首先你需要检查$command->execute()true,如果没有你检查mysql报告的错误。
  • 如果idNews 是自动增量的,您不必传递任何有关它的信息,如果发生错误并且您错过了它,请检查/runtime/application.log
  • 使用inserts等数据管理请求,违背了Yii等MVC框架中分离视图、业务逻辑和数据管理的做法。如果必须这样做,则应重新评估是否需要使用 Yii 等框架。

标签: php mysql sql yii


【解决方案1】:

或者:

$sql = 'insert into news (news, display) values (:news, :display)';
$parameters = array(':user_id'=>'', ':created' => date('Y-m-d H:i:s'));
Yii::app()->db->createCommand($sql)->execute($parameters);

【讨论】:

    【解决方案2】:

    为什么要在视图页面中执行查询?在数据访问层是您通常执行查询的地方。您可以先在控制器中尝试。

    在这里你可以阅读 Yii 中的数据访问对象: http://www.yiiframework.com/doc/guide/1.1/en/database.dao

    【讨论】:

      【解决方案3】:

      试试这个:

      $news = new News();
      $news->news = "anything";
      $news->display = 0;
      $news->save(false);
      

      【讨论】:

      • @user3194430 你有新闻模型吗?
      • 我又发布了一个答案,试试看告诉我
      • 哦,我忘了说包含这段代码的php文件不在受保护的目录中
      • 我知道,但是我把它放在了受保护的目录之外,因为这是一个ajax函数需要使用文件
      • 我不确定兄弟)为什么不在控制器中执行 ajax 功能?
      猜你喜欢
      • 1970-01-01
      • 2013-06-30
      • 2020-02-21
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多