如何在 kohana 3.1 中调用程序

Posted

技术标签:

【中文标题】如何在 kohana 3.1 中调用程序【英文标题】:How to call procedure in kohana 3.1 【发布时间】:2012-04-27 12:11:55 【问题描述】:

Kohana 是一个 php 框架。 这是文档。 如何在这个框架中调用过程。 我已经搜索过这个问题并提出了问题。 喜欢 : insert_id in Kohana 3

这是我的代码:

$conn = Database::instance();       
$queryStr = "call sp_createUser('$nick_name','$email','$password','127.0.0.1')";
$query = DB::query(Database::SELECT, $queryStr);
$query->execute($conn);

但有一些例外..

Database_Exception [ 1312 ]: PROCEDURE sp_createUser can't return a result set in the given context [ call sp_createUser('1','1','1','127.0.0.1') ]

db 连接好像有问题..

我该如何解决它...寻求帮助..

【问题讨论】:

【参考方案1】:

在查询之前使用$query->compile(Database::instance); 来检查您的查询字符串并找到它的错误。

还请给我们您的 PROCEDURE 正文。它看起来像 PROCEDURE 以不兼容的格式将数据返回给 Kohana。

你的$query->compile(Database::instance);返回字符串是直接在mysql中执行的吗?

【讨论】:

调用 sp_createUser('1','1','1','127.0.0.1') ,它可以在db中成功执行。所以查询字符串没有问题。 您在 PHP 中使用什么模块来处理 MySQL? mod_mysql 还是 mod_mysqli?使用存储过程需要 mod_mysqli。 mod_mysql ,这是框架文档:kohanaframework.org/3.1/guide/database/query/builder 我想我找到了问题所在。我尝试在程序中为每个用户创建一个随机ID,然后我使用“select account_id”直接返回帐户。我对此发表评论,异常消失了。【参考方案2】:

尝试用 SELECT 替换 call...

$queryStr = "SELECT sp_createUser('$nick_name','$email','$password','127.0.0.1')";

【讨论】:

使用 CALL 语句调用过程 (dev.mysql.com/doc/refman/5.1/en/call.html)

以上是关于如何在 kohana 3.1 中调用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kohana 中使用 ORM 连接表

Kohana 3.1 ORM 数据库查询

Kohana 3.1 都有哪些可用的 ORM 解决方案?

如何在 Kohana 3 中链接多个 ORM 关系?

如何将 Wordpress 集成到 Kohana 3 中

kohana 如何将 javascript 捆绑到视图中