0

このデータベース クエリが失敗するのはなぜですか? 私のCentOSで。

エラー/例外:

"Notice: Undefined variable: table in /var/www/html/-manager/application/controllers/IndexController.php on line 37 Fatal error: Call to a member function getAdapter() on a non-object in /var/www/html/-manager/application/controllers/IndexController.php on line 37 Warning: Unknown: write failed: No space left on device (28) in Unknown on line 0 Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0

ディスクスペース?:

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_demo-lv_root
                       50G   47G     0 100% /
tmpfs                 3.9G     0  3.9G   0% /dev/shm
/dev/sda1             485M   47M  413M  11% /boot
/dev/mapper/vg_demo-lv_home
                      170G  200M  161G   1% /home

次のように呼び出します。

    $rows = new Application_Model_Clients();  // PASS
    $dbsession = $rows->give_sessions("test"); // FAILS

在庫あり:

mysql> select username,password from sh_operator;
+----------+----------+
| username | password |
+----------+----------+
| test     | 1234567  |
+----------+----------+
1 rows in set (0.00 sec)

mysql> 


<?php

class Application_Model_Clients extends Zend_Db_Table {

  protected $_name = 'web145-mydb.sh_operator';

  public function addRecord($post) {
    $encrypted = mt_rand();
    $value = array(
        'email'       => $post->email,
    );
    return $this->insert($value);
  }

  public function search($zip) {
    $result = $this->fetchRow("zip =" . $zip);
    return $result->toArray();
  }

  public function give_sessions($input) {
    Zend_Debug::dump($input); // PASS test
    echo "alive 0 "; // PASS
    $result = $this->fetchRow("username ='" . $input . "'");
    echo "alive 1 "; // fails
    exit;
    return $result->toArray();
  }

}

?>
4

2 に答える 2

0

あなたのSQLgive_sessions()は多くの引用符で終わる可能性が高いよう"username ='" . "test" . "'"です。

自分で簡単にすることを検討し、引用符を処理する提供されたselect()オブジェクト構文を使用することを検討してください。そうしない場合、 fetchRow()select()を作成します。

public function give_sessions($input) {
    $select = $this->select();
    $select->where('username = ?', $input);
    $result = $this->fetchRow($select);
    return $result->toArray();
  }

select()を使用すると、クエリの構造を柔軟に設定することもできます。

次のようなコントローラーアクションのコードを使用して、現在のアダプター構成をテストすることをお勧めします。

$table = new Application_Model_Clients();
Zend_Debug::dump($table->getAdapter()->listTables(), 'Adapter Table List');

これにより、アダプタがアクセスできるテーブルの配列がエコーアウトされます。

于 2012-10-27T09:04:24.767 に答える
0

「-」を含むデータベース名の場合、バッククォートを使用してアダプターに正しく割り当てる必要がある場合があります。

   protected $_name = '`web145-mydb`.sh_operator';

例外は、ディスク容量が残っていないことを示しています。問題を解決するはずのスペースを空けてください。

于 2012-10-27T16:53:24.623 に答える