0

アカウントコントローラーから管理パネルコントローラーを呼び出すことはできますか?つまり、アカウントコントローラーで、管理パネルのアクセス可能な部分を設定し、アクセス可能な場所でその変数を管理パネルコントローラーに転送したいと思います。

そして今、私は次のようにsthを行うことができます:

<?php

// Code here

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

?>

または、MVCルールでは許可されていませんか?

4

4 に答える 4

2

このようなもの:

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

はすべて問題なくダンディですが、実際にはそのデータベース接続オブジェクトをオブジェクトのどこにも保存していません。これはその特定のメソッドの単なるローカル変数であり、関数が終了すると破棄されます。たとえば、接続している場合、connct()メソッドが戻るとすぐに、ローカル$db変数がスコープ外になり、新しいデータベース接続が閉じられて破棄されます。

その$dbをOWNオブジェクトに保存する必要があるため、後で使用するために保存されます。例:

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

代わりは。

そして、上記の他の誰もが言っているように、mysql_ ()、mysqli_()、およびPDO接続を互いに混合することはできません。それぞれが完全に別個の別個のライブラリです(それらはすべて同じ基礎となるmysql低レベルライブラリを使用しますが)。それらの1つで確立された接続は、他のライブラリによって完全に区別/分離/使用できません。接続にPDOを使用しているため、mysql_はPDOで何が起こっているかを認識していないため、mysql_関数を使用できません。

于 2013-01-01T19:21:11.037 に答える
1

あなたの問題はmysql_real_escape_string()、接続を期待していることです(コマンドのmysql_ *サブセットを使用せずに、接続を確立しました)。

現在行っていることではなく、PDOと実際のプリペアドステートメントを使用します。

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

「呼び出す」とは、それを使用することを意味すると思います。

戻り値を追加するだけです。-return $db;これは、エラーモードが設定された後、connect()の最後になります。

$db = new mysql();
$conn = $db->connect();
$conn->prepare('SELECT * FROM myTable WHERE myColumn = ?');
$conn->execute(array('test'));
于 2013-01-01T19:06:11.823 に答える
1

答えはそれがどのように機能するかについてマニュアルで読まれています:http://php.net/oop5

前の質問への回答:

次のエラーが発生します。

警告:mysql_real_escape_string()[function.mysql-real-escape-string]:/home/radiolev/public_html/top/toplist.class.phpのユーザー'radiolev' @'localhost'(パスワード:NOを使用)のアクセスが拒否されました10行目

警告:mysql_real_escape_string()[function.mysql-real-escape-string]:サーバーへのリンクを10行目の/home/radiolev/public_html/top/toplist.class.phpに確立できませんでした

次に、次のように尋ねます。

mysqlパスワードが適切であるために表示される理由がわかりません。

心配ない。あなたはちょっとした間違いをしました。間違いはmysql_real_escape_string、拡張機能の接続を使用せずに関数を使用することですmysql_*(注:データベースサーバーではなく拡張機能)。

拡張データベース接続を確立せずにその関数を呼び出す場合mysql_*、PHPはphp.iniで提供された設定に基づいて自動的に関数を作成します。これは通常、ローカルホストに設定されたホストのみです、ユーザー名とパスワードはありません。

これが、接続が失敗したという最初のエラーが表示され、2番目のエラーが接続の失敗の結果である理由です-データベースへのリンクがないので、?mysql_real_escape_string動作しません。

この問題を解決するには、mysql_real_escape_stringを介してmysqlを使用している場合は使用しないでくださいPDO。必要なのは準備されたステートメントだけです。

于 2013-01-01T19:08:11.987 に答える
0

mysql_real_escape_stringPDOのquoteまたはbindValueに置き換えます

mysql_real_escape_stringによって使用された最後に開いた接続を使用しようとしているため、多数のエラーが発生します( PHPマニュアルmysql_connectで説明されています)。mysql_ *関数の代わりにPDOを使用しているため、接続がなく、エラーがスローされます。mysql_real_escape_string

于 2013-01-01T19:06:22.477 に答える