0

0

phalcon框架中如何实现脱离模型进行sql查询?

php中文网

php中文网

发布时间:2016-06-23 14:17:06

|

1635人浏览过

|

来源于php中文网

原创

PHP 框架

比如,我有表A和表B,在models/下有A.php这个model类,而没有B的,现在在A中需要对表B进行一次SQL查询,在不创建B的model类的情况下如何拿到B的数据?

回复讨论(解决方案)

直接写原生的mysql_connect() mysql_select_db() mysql_query() 再循环结果集取数据  

$ar = $obj->fetchAll($sql); 

$r = $obj->fetchOne($sql);

其实 Phalcon 的类都是可以单独使用的,并不一定非要在框架中使用
比如

$connection = new \Phalcon\Db\Adapter\Pdo\Mysql(array(        "host" => "localhost",        "username" => "root",        "password" => "",        "dbname" => "test"    ));//print_r(get_class_methods($connection)); //从支持的方法上看,只不过是在PDO上扩展了一些功能$connection->query('set names gbk');$t = $connection->fetchAll('select * from `123`', 1);print_r($t);
Array
(
    [0] => Array
        (
            [id] => 1
            [姓名] => 张三
            [型号] => A8-300
            [工位] => A
            [数量] => 200
            [时间] => 2013-06-05 08:46:00
        )

    [1] => Array
        (
            [id] => 2
            [姓名] => 李四
            [型号] => A8-300
            [工位] => B
            [数量] => 121
            [时间] => 2013-06-05 08:48:00
        )

    [2] => Array
        (
            [id] => 3
            [姓名] => 王五
            [型号] => A1-200
            [工位] => C
            [数量] => 45
            [时间] => 2013-06-05 07:48:00
        )

    [3] => Array
        (
            [id] => 4
            [姓名] => 张三
            [型号] => A8-300
            [工位] => A
            [数量] => 420
            [时间] => 2013-06-05 10:46:00
        )

    [4] => Array
        (
            [id] => 5
            [姓名] => 王五
            [型号] => A8-300
            [工位] => C
            [数量] => 500
            [时间] => 2013-06-05 13:46:00
        )

)
我这个表很怪异吧

$ar = $obj->fetchAll($sql); 

$r = $obj->fetchOne($sql);

其实 Phalcon 的类都是可以单独使用的,并不一定非要在框架中使用
比如

$connection = new \Phalcon\Db\Adapter\Pdo\Mysql(array(        "host" => "localhost",        "username" => "root",        "password" => "",        "dbname" => "test"    ));//print_r(get_class_methods($connection)); //从支持的方法上看,只不过是在PDO上扩展了一些功能$connection->query('set names gbk');$t = $connection->fetchAll('select * from `123`', 1);print_r($t);
Array
(
    [0] => Array
        (
            [id] => 1
            [姓名] => 张三
            [型号] => A8-300
            [工位] => A
            [数量] => 200
            [时间] => 2013-06-05 08:46:00
        )

    [1] => Array
        (
            [id] => 2
            [姓名] => 李四
            [型号] => A8-300
            [工位] => B
            [数量] => 121
            [时间] => 2013-06-05 08:48:00
        )

    [2] => Array
        (
            [id] => 3
            [姓名] => 王五
            [型号] => A1-200
            [工位] => C
            [数量] => 45
            [时间] => 2013-06-05 07:48:00
        )

    [3] => Array
        (
            [id] => 4
            [姓名] => 张三
            [型号] => A8-300
            [工位] => A
            [数量] => 420
            [时间] => 2013-06-05 10:46:00
        )

    [4] => Array
        (
            [id] => 5
            [姓名] => 王五
            [型号] => A8-300
            [工位] => C
            [数量] => 500
            [时间] => 2013-06-05 13:46:00
        )

)
我这个表很怪异吧

在index里面依赖注入的时候已经建立了一次数据库的连接,假如再使用这种方法那就又多了一个连接了不是吗?有没有更好的方法?只存在一个数据库连接

非也,我贴的代码只是说明 Phalcon 的类都是可以单独使用的

model类是继承于 Phalcon 数据库类的
所以他一样具有基类的方法
你用 get_class_methods 函数看一下就知道了

非也,我贴的代码只是说明 Phalcon 的类都是可以单独使用的

model类是继承于 Phalcon 数据库类的
所以他一样具有基类的方法
你用 get_class_methods 函数看一下就知道了

其实也是,一开始我也这样子想,没必要死磕这点。
现在特别蛋疼的是,数据库之前设计字段名有关键字”desc“,结果不使用SELECT * 。。方法查询的话没办法取得这个字段,有遇到过这种情况吗?


非也,我贴的代码只是说明 Phalcon 的类都是可以单独使用的

model类是继承于 Phalcon 数据库类的
所以他一样具有基类的方法
你用 get_class_methods 函数看一下就知道了

其实也是,一开始我也这样子想,没必要死磕这点。
现在特别蛋疼的是,数据库之前设计字段名有关键字”desc“,结果不使用SELECT * 。。方法查询的话没办法取得这个字段,有遇到过这种情况吗?

遇到过.... 印象中改了字段名... 还是说用其他方法也可以?... 很久了忘记处理方式了.



非也,我贴的代码只是说明 Phalcon 的类都是可以单独使用的

model类是继承于 Phalcon 数据库类的
所以他一样具有基类的方法
你用 get_class_methods 函数看一下就知道了

其实也是,一开始我也这样子想,没必要死磕这点。
现在特别蛋疼的是,数据库之前设计字段名有关键字”desc“,结果不使用SELECT * 。。方法查询的话没办法取得这个字段,有遇到过这种情况吗?

遇到过.... 印象中改了字段名... 还是说用其他方法也可以?... 很久了忘记处理方式了.


要是改字段的话不现实啊。。。要改的话众多项目也都要改代码,而且数据量太大,改起来会锁表,影响各个应用的正常运行。倒是想过干脆select *算了,查出来再过滤字段?可是总感觉这样也会影响效率。。




非也,我贴的代码只是说明 Phalcon 的类都是可以单独使用的

model类是继承于 Phalcon 数据库类的
所以他一样具有基类的方法
你用 get_class_methods 函数看一下就知道了

其实也是,一开始我也这样子想,没必要死磕这点。
现在特别蛋疼的是,数据库之前设计字段名有关键字”desc“,结果不使用SELECT * 。。方法查询的话没办法取得这个字段,有遇到过这种情况吗?

遇到过.... 印象中改了字段名... 还是说用其他方法也可以?... 很久了忘记处理方式了.


要是改字段的话不现实啊。。。要改的话众多项目也都要改代码,而且数据量太大,改起来会锁表,影响各个应用的正常运行。倒是想过干脆select *算了,查出来再过滤字段?可是总感觉这样也会影响效率。。





不知道能否帮到你 加个撇号 貌似就不报错了





非也,我贴的代码只是说明 Phalcon 的类都是可以单独使用的

model类是继承于 Phalcon 数据库类的
所以他一样具有基类的方法
你用 get_class_methods 函数看一下就知道了

其实也是,一开始我也这样子想,没必要死磕这点。
现在特别蛋疼的是,数据库之前设计字段名有关键字”desc“,结果不使用SELECT * 。。方法查询的话没办法取得这个字段,有遇到过这种情况吗?

遇到过.... 印象中改了字段名... 还是说用其他方法也可以?... 很久了忘记处理方式了.


要是改字段的话不现实啊。。。要改的话众多项目也都要改代码,而且数据量太大,改起来会锁表,影响各个应用的正常运行。倒是想过干脆select *算了,查出来再过滤字段?可是总感觉这样也会影响效率。。





不知道能否帮到你 加个撇号 貌似就不报错了

0.0这个我知道,我是讲在phalcon中来执行$modelsManager->executeQuery($sql);的查询方法,其中$sql="SELECT id, name, `desc` FROM ....";一般我们正常写法会给关键字加反引号,但是使用phalcon他会解析sql,这样写不行。。

怎么呢?我不就是这么写的吗?

$t = $connection->fetchAll('select * from `123`', 1);

怎么呢?我不就是这么写的吗?

$t = $connection->fetchAll('select * from `123`', 1);


public PDOStatement executePrepared(PDOStatement $statement, array $placeholders, array $dataTypes);

这里的$dataTypes是什么?例子里面只传了两个参数啊

不太明白你的意思
间隔时间长了,跟不上你的思路

不太明白你的意思
间隔时间长了,跟不上你的思路

额。。。之前的那个问题解决了,是我没有把新问题说清楚,抱歉。是这样的e,在看文档时发现这个方法

public PDOStatement prepare (string $sqlStatement)//Returns a PDO prepared statement to be executed with ‘executePrepared’$statement = $db->prepare(’SELECT * FROM robots WHERE name = :name’);$result = $connection->executePrepared($statement, array(’name’ => ’Voltron’));public PDOStatement executePrepared (PDOStatement $statement, array $placeholders, array $dataTypes)//Executes a prepared statement binding. This function uses integer indexes starting from zero


但是他这里的示例executePrepared只传了两个参数,但是定义里面是有三个参数的,array $dataTypes是必传单数,想知道这个$dataTypes是啥

不太明白你的意思
间隔时间长了,跟不上你的思路
版主版主快现身~~!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

2

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

25

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

8

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

622

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP6.x 微实战--十天技能课堂
ThinkPHP6.x 微实战--十天技能课堂

共26课时 | 1.7万人学习

Swoft2.x速学之http api篇课程
Swoft2.x速学之http api篇课程

共16课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号