2013-01-01 115 views
0

我可以從帳戶控制器調用管理面板控制器嗎? 我的意思是在帳戶控制器我設置管理面板的可訪問部分,我想要將該變量與可訪問的地方轉移到管理面板控制器。來自PHP MVC控制器的呼叫控制器?

,現在我可以做某事喜歡:

<?php 

// Code here 

$this->panel = new Admin_Panel(); 
$this->panel->accessibleparts = $this->data['accessible']; 

?> 

抑或是在MVC規則,不允許?

+0

如果你使用PDO,你應該爲了調試的原因而禁用'mysql'擴展名,這樣你就不會像'mysql_real_escape_string'那樣使用它的函數 - 你不需要。 – hakre

+0

檢查第二部分,我解決了它 –

+0

然後請添加您的解決方案作爲答案,並接受答案,所以很明顯你的問題已被回答。對於第二個問題,請提出一個新問題。 – hakre

回答

1

答案是瞭解它是如何工作的手冊:http://php.net/oop5

回答你剛纔的問題:

會得到以下錯誤:

警告:mysql_real_escape_string()[函數.mysql-real-escape-string]:訪問deni在/home/radiolev/public_html/top/toplist.class.php第10行

警告:編輯爲用戶 'radiolev' @ '本地主機'(NO使用密碼):mysql_real_escape_string()[function.mysql-實逃生繩]:一個連接到服務器無法在/home/radiolev/public_html/top/toplist.class.php第10行

建立你然後問:

我不不明白爲什麼它會出現,因爲mysql密碼很好。

不用擔心。你犯了一個小錯誤。錯誤在於您使用功能mysql_real_escape_string,而不使用mysql_*擴展的連接(注意:擴展,而不是數據庫服務器)。

如果您在未建立mysql_*擴展數據庫連接的情況下調用該函數,PHP將根據php.ini中提供的設置自動創建一個。通常這只是主機設置爲本地主機 - 但沒有用戶名和密碼。

這就是爲什麼你看到連接失敗的第一個錯誤,第二個錯誤是連接失敗的結果 - 沒有鏈接到數據庫,所以? mysql_real_escape_string無法正常工作。

要解決這個問題,只要在通過PDO使用mysql時不要使用mysql_real_escape_string。準備好的陳述是你所需要的。

1

你的問題是mysql_real_escape_string()需要一個連接(你所做的只是不使用mysql_ *子集的命令)。

使用PDO和實際準備好的語句,而不是你現在正在做什麼。

$pdo = $conn->prepare('SELECT * FROM myTable WHERE theColumn = :myParam'); 
$pdo->bindParam(':myParam', $_GET['data']); 
$pdo->execute(); 

通過'call'我假設你的意思是使用它。

只需添加一個返回值return $db; - 在錯誤模式設置後,這將會在connect()的末尾。

現在

$db = new mysql(); 
$conn = $db->connect(); 
$conn->prepare('SELECT * FROM myTable WHERE myColumn = ?'); 
$conn->execute(array('test')); 
+0

不僅看第二部分的帖子不是第一個; s –

+0

更新的答案/ –

0

更換mysql_real_escape_string與PDO的quotebindValue

你得到一堆錯誤,因爲mysql_real_escape_string嘗試使用由mysql_connect使用的最後一個打開的連接(如PHP Manual解釋) 。由於您使用的是PDO而不是mysql_ *函數,因此沒有連接並且發生錯誤。

2

這樣的東西:

public function connect(){ 
    try { 
     $db = new PDO('mysql:host=localhost;dbname=radiolev_db', 'radiolev_user', 'ceowwyso1'); 

是所有罰款和花花公子,但你沒有真正的任何地方存儲該數據庫連接對象在你的對象。它只是該特定方法中的局部變量,並且在函數退出時將被銷燬。例如你正在連接,那麼只要你的connct()方法返回,本地$db變量超出了範圍,並且你的全新數據庫連接被關閉並銷燬。

你需要存儲$ DB在OWN對象,所以它會被保留下來以備後用,e.g:

$this->db = new PDO(...); 

代替。正如上面其他人所說的,你不能混合使用mysql_ (),mysqli_()和PDO連接。每個庫都是完全獨立的獨立庫(儘管它們都使用相同的底層mysql低級庫)。在其中一箇中建立的連接是完全獨立的/獨立的/其他庫不可用的。由於您正在使用PDO進行連接,因此您無法使用mysql_函數,因爲mysql_不知道PDO中正在進行的任何操作。

+0

還是不明白我應該怎麼做,你能告訴我任何例子嗎? –