我可以從帳戶控制器調用管理面板控制器嗎? 我的意思是在帳戶控制器我設置管理面板的可訪問部分,我想要將該變量與可訪問的地方轉移到管理面板控制器。來自PHP MVC控制器的呼叫控制器?
,現在我可以做某事喜歡:
<?php
// Code here
$this->panel = new Admin_Panel();
$this->panel->accessibleparts = $this->data['accessible'];
?>
抑或是在MVC規則,不允許?
我可以從帳戶控制器調用管理面板控制器嗎? 我的意思是在帳戶控制器我設置管理面板的可訪問部分,我想要將該變量與可訪問的地方轉移到管理面板控制器。來自PHP MVC控制器的呼叫控制器?
,現在我可以做某事喜歡:
<?php
// Code here
$this->panel = new Admin_Panel();
$this->panel->accessibleparts = $this->data['accessible'];
?>
抑或是在MVC規則,不允許?
答案是瞭解它是如何工作的手冊: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
。準備好的陳述是你所需要的。
你的問題是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'));
不僅看第二部分的帖子不是第一個; s –
更新的答案/ –
更換mysql_real_escape_string
與PDO的quote或bindValue
你得到一堆錯誤,因爲mysql_real_escape_string
嘗試使用由mysql_connect
使用的最後一個打開的連接(如PHP Manual解釋) 。由於您使用的是PDO而不是mysql_ *函數,因此沒有連接並且發生錯誤。
這樣的東西:
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中正在進行的任何操作。
還是不明白我應該怎麼做,你能告訴我任何例子嗎? –
如果你使用PDO,你應該爲了調試的原因而禁用'mysql'擴展名,這樣你就不會像'mysql_real_escape_string'那樣使用它的函數 - 你不需要。 – hakre
檢查第二部分,我解決了它 –
然後請添加您的解決方案作爲答案,並接受答案,所以很明顯你的問題已被回答。對於第二個問題,請提出一個新問題。 – hakre