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是啥
不太明白你的意思
間隔時間長了,跟不上你的思路
版主版主快現身~~!