【问题标题】:MySQL Queries using Doctrine & CodeIgniter使用 Doctrine 和 CodeIgniter 的 MySQL 查询
【发布时间】:2010-04-24 13:23:47
【问题描述】:

编辑:我的 Doctrine 查询(见下文)不起作用/产生这些错误的原因是因为我遗漏了

ci_doctrine.

创建此数据库时:

CREATE TABLE `ci_doctrine`.`user` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `username` VARCHAR( 255 ) NOT NULL ,
    `password` VARCHAR( 255 ) NOT NULL ,
    `first_name` VARCHAR( 255 ) NOT NULL ,
    `last_name` VARCHAR( 255 ) NOT NULL ,
    UNIQUE (`username`
)
)

编辑结束

如何使用 Doctrine 连接对象编写平面 SQL 查询并显示结果?比如我该怎么做:

SELECT * FROM table_name WHERE column_name LIKE '%anything_similar_to_this%';

使用类似这样的 Doctrine(这个例子不起作用)

 $search_key = 'search_for_this';

 $conn = Doctrine_Manager::connection();

 $conn->execute('SELECT * FROM table_name WHERE column_name LIKE ?)',  $search_key);

 echo $conn;  

我也试过了:

$search_key = 2;
$q = new Doctrine_RawSql();
$result = $q->select('column_name')
  ->from('table_name')
  ->where('id = ?', $search_key)
  ->execute();

echo $result;

【问题讨论】:

    标签: mysql codeigniter doctrine


    【解决方案1】:

    Doctrine 使用它自己的称为 DQL 的查询语言。它使用一个查询类来处理称为 Doctrine_Query 的查询。通过这个类,您可以使用所谓的查询构建器构建查询。

    您可以查看http://doctrine-project.com 的文档以了解它的具体工作原理。

    【讨论】:

      【解决方案2】:

      您有一个不必要的括号,这可能会导致错误。尝试改变:

      SELECT * FROM table_name WHERE column_name LIKE ?)
      

      到:

      SELECT * FROM table_name WHERE column_name LIKE ?
      

      如果仍然不起作用,请尝试发布错误消息。

      【讨论】:

      • +1。我改变了: $conn->execute('SELECT * FROM table_name WHERE column_name LIKE ?)', $search_key); to $conn->execute('SELECT * FROM table_name WHERE column_name LIKE ?', $search_key);并得到以下错误:严重性:4096 消息:传递给 Doctrine_Connection::execute() 的参数 2 必须是数组,给定字符串,调用... 严重性:警告消息:为 foreach() 提供的参数无效...致命错误:未捕获的异常 'Doctrine_Connection_Mysql_Exception' 带有消息 'SQLSTATE[HY093]:无效的参数号:没有参数被绑定在...
      猜你喜欢
      • 1970-01-01
      • 2017-03-30
      • 2014-03-06
      • 2023-03-07
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 2011-12-31
      • 2015-06-17
      相关资源
      最近更新 更多