私はここで本当に混乱しています。
このクエリは、localhost では問題なく機能しますが、実際のライブ サーバーでは機能しません。同じデータベースに対する他のクエリは機能するため、接続や pdo 拡張機能に問題はありません。
基本的にこれはクエリです:
$sql = "SELECT * FROM bksb_Resources";
$query = $this->connection->query($sql, array());
query() メソッドは PDOStatement オブジェクトを返します
次に、ループを呼び出し$this->connection->fetch($query)
ます。ループは、「接続」オブジェクトのメソッドにルーティングされます。
function fetch_pdo($st)
{
return $st->fetch();
}
したがって、基本的には、テーブルからすべてを選択してから最初の行を返します (これはループですが、実際には関係ありません)。
ローカルホストでは、これで問題ありません。問題はありません。
私のライブサーバーでは、次のようになります。
Fatal error: Cannot access empty property in /var/www/html/demo/blocks/elbp/classes/db/MSSQL.class.php on line 652
652 行目は、上記の fetch_pdo メソッドからの戻り値です。
fetch() を実行する前にステートメントを印刷しましたが、両方のサーバーで問題ありません。
PDOStatement Object
(
[queryString] => SELECT * FROM bksb_Resources
)
私は本当にアイデアがありません。残りのクエリがライブサーバーでも正常に機能する場合、これがあるサーバーでは機能し、別のサーバーでは機能しない理由がわかりません。
(まあ...残りのことを言います。これはもともと、localhost のクエリが正しい結果を返し、ライブのクエリが何も返さないという別の問題でした。 ..しかし、私がこれに出くわしたことをデバッグしようとしている)。
誰でもアイデアはありますか?
ありがとう
編集:
への呼びかけ$this->connection->query($sql, array());
これを呼び出します:
/**
* Run an SQL query and return a statement - to be used for things like selecting
* @param type $sql
* @param type $params
* @return type
*/
public function query($sql, $params){
$this->lastSQL = $sql;
$func = 'query_'.$this->extension;
return $this->$func($sql, $params);
}
次にこれを呼び出します:
/**
* Run SQL query using PDO
* @param type $sql
* @param type $params
* @return $st Statement
*/
private function query_pdo($sql, $params)
{
$st = $this->dbh->prepare($sql);
$st->execute($params);
return $st;
}
また、必要に応じて、これはフェッチを呼び出すループです。
$results = array();
while($row = $this->connection->fetch($query)){
$results[] = $row;
}