ホームページ > バックエンド開発 > PHPチュートリアル > palconフレームワークでモデルなしでSQLクエリを実装するにはどうすればよいですか?

palconフレームワークでモデルなしでSQLクエリを実装するにはどうすればよいですか?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-23 14:17:06
オリジナル
1577 人が閲覧しました

PHP フレームワーク

たとえば、テーブル A とテーブル B があります。models/ の下にモデル クラス A.php がありますが、B はありません。ここで、A のテーブル B に対して SQL クエリを実行する必要があります。B の場合が作成されていないのですが、モデルクラスの場合Bのデータを取得するにはどうすればよいでしょうか?

ディスカッションに返信(解決策)

ネイティブ mysql_connect() mysql_select_db() mysql_query() を直接記述して、結果セットをリサイクルしてデータを取得します

$ar = $obj->fetchAll($sql);
または
$r = $obj->fetchOne($sql);

実際、Phalcon クラスは単独で使用でき、必ずしも必要ではありません。 rreearrayなどのフレームワーク(
[0] => array

] => 1
] => ] =>

$ar = $obj->fetchAll($sql);
または
$r = $obj->fetchOne($sql);

実際、Phalcon クラスは単独で使用でき、必ずしも必要ではありません。 RREEEARRAYなどのフレームワークでは、(
[0] => array

] => 1
] =>> 2
121
:48:00


> array [名前[名前) ] => zhang sanもう一つのつながりになりますよね?もっと良い方法はありますか?データベース接続は 1 つだけです

いいえ、私が投稿したコードは、Phalcon クラスが単独で使用できることを示しているだけです

モデル クラスは Phalcon データベース クラスから継承されています
したがって、基本クラス メソッドもあります
get_class_methods 関数を使用してそれを確認できます

いいえ、私が投稿したコードは、Phalcon クラスが単独で使用できることを示しているだけです

モデル クラスは Phalcon データベース クラスから継承されています
したがって、基本クラス メソッドもあります
get_class_methods 関数を使用して確認できます

実際、私は私も最初はそう思っていたので、こだわる必要はありません。
特に厄介なのは、以前はフィールド名にキーワード「desc」を使用してデータベースが設計されていたのに、結果として SELECT * が使用されなかったことです。 。このフィールドはメソッド クエリでは取得できません。このような状況に遭遇したことはありますか?


いいえ、私が投稿したコードは、Phalcon クラスが単独で使用できることを示しているだけです

モデル クラスは Phalcon データベース クラスから継承されています
したがって、基本クラス メソッドもあります
get_class_methods 関数を使用してそれを確認できます

実は私も最初はそう思っていました、これにこだわる必要はありません。
特に厄介なのは、以前はフィールド名にキーワード「desc」を使用してデータベースが設計されていたのに、結果として SELECT * が使用されなかったことです。 。このフィールドはメソッド クエリでは取得できません。このような状況に遭遇したことはありますか?

遭遇してしまいました… フィールド名を頭の中で変更してしまいました… それとも他の方法が使えるのでしょうか… 久しぶりなので対処法を忘れてしまいました



いいえ、私が投稿したコードは Phalcon を説明するためのものです。 すべてのクラスは独立して使用できます

モデル クラスは Phalcon データベース クラスから継承されます
したがって、基本クラスのメソッドも持っています
get_class_methods 関数

実際、私も最初そう思っていましたが、これにこだわる必要はありません。
特に厄介なのは、以前はフィールド名にキーワード「desc」を使用してデータベースが設計されていたのに、結果として SELECT * が使用されなかったことです。 。このフィールドはメソッド クエリでは取得できません。このような状況に遭遇したことはありますか?

遭遇しました... フィールド名が変更されたような印象がありました... それとも他の方法を使用することができますか... 久しぶりなので対処方法を忘れてしまいました


分野を変えるのは非現実的です。 。 。コードを変更する必要がある場合、多くのプロジェクトでもコードを変更する必要があり、データ量が多すぎるとテーブルがロックされ、各アプリケーションの通常の動作に影響を及ぼします。 *Forget it を選択して調べてフィールドをフィルタリングすることを考えました。しかし、これは効率にも影響すると常々感じています。 。




いいえ、私が投稿したコードは、Phalcon クラスが単独で使用できることを示しているだけです

モデル クラスは Phalcon データベース クラスから継承します
したがって、基本クラス メソッドもあります
get_class_methods 関数を使用して、見てくださいね

実は私も最初はそう思っていました、ここまでこだわる必要はありません。
特に厄介なのは、以前はフィールド名にキーワード「desc」を使用してデータベースが設計されていたのに、結果として SELECT * が使用されなかったことです。 。このフィールドはメソッド クエリでは取得できません。このような状況に遭遇したことはありますか?

遭遇しました... フィールド名が変更されたような印象がありました... それとも他の方法を使用することができますか... 久しぶりなので対処方法を忘れてしまいました


分野を変えるのは非現実的です。 。 。コードを変更する必要がある場合、多くのプロジェクトでもコードを変更する必要があり、データ量が多すぎるとテーブルがロックされ、各アプリケーションの通常の動作に影響を及ぼします。 *Forget it を選択して調べてフィールドをフィルタリングすることを考えました。しかし、これは効率にも影響すると常々感じています。 。





アポストロフィを追加するとエラーが回避されるようです





非也,我贴的代码只是说明 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是啥

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート