Nous avons amélioré notre PHP de 5.3 à 5.6 et maintenant je reçois des erreurs et des avertissements. Im un peu confus sur ce que déconseillé de PHP 5.3 qui causerait cela.PHP Erreur fatale: Appel à une fonction membre getEntry() mis à jour php 5.3 à 5.6
PHP Warning: get_class() called without object from outside a class in /home/website/public_html/php/search.class.php on line 6
PHP Warning: Creating default object from empty value in /home/website/public_html/favorites/favorite.class.php on line 25
PHP Fatal error: Call to a member function getEntry() on a non-object in /home/website/public_html/php/search.class.php on line 43
get_class
L'avertissement
if(get_class($favorite) === false)
$favorite = new favorite;
$commQuery
est la ligne d'erreur fatale 43
class getCommDetails{
var $community;
var $commURL;
var $commAddress;
var $commPhone;
var $cid;
var $commMin;
var $commMax;
function getCommDetails($community){
$ret = false;
if(get_class($db) === false)
$db = new DB(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
$this->community = $community;
$commQuery = $db->getEntry('communities', '*', "communities.community = '$this->community'");
if($db->numrows($commQuery) === 1) {
$commResults = $db->fetch_array($commQuery);
$this->commURL = $commResults['url'];
$this->commAddress = $commResults['address'];
$this->commPhone = $commResults['sales_phone'];
$this->cid = $commResults['cid'];
$this->vars = $commResults;
//$this->commURL = $fpResults
$ret = true;
}
return $ret;
}
};
code de connexion de base de données
<?php
class DB {
// Class Variables
var $connection;
var $queryStr;
// Class Constructor
function DB($DB_Server, $DB_User, $DB_Pass, $DB_Name){
$this->connection = mysqli_connect("$DB_Server", "$DB_User", "$DB_Pass","$DB_Name") or die("MySQL Connection Err: ". mysqli_error($this->connection));
//mysql_select_db("$DB_Name") or die("MySQL DB Err: ".mysql_error());
}
// Class Functions
function addEntry($table, $fieldlist, $valuelist){
$this->queryStr = "INSERT INTO `". $table ."` ($fieldlist) VALUES ($valuelist)";
return $this->query($this->queryStr);
}
function updateEntry($table, $fieldvalues, $where = NULL){
if(is_array($fieldvalues)){
$c=0;$numFields=count($fieldvalues);
foreach($fieldvalues as $fieldname => $value){
if($fieldname == 'inventoryAction'){
$c++;
continue;
}
$fieldvaluelist .= $fieldname."='".$value."'";
if($numFields > 1){
if($c < $numFields-1)
$fieldvaluelist .= ",";
}
$c++;
}
} else {
return false;
}
$this->queryStr = "UPDATE `". $table ."` SET ".$fieldvaluelist;
if($where !== NULL)
$this->queryStr .= " WHERE $where";
return $this->query($this->queryStr);
}
function removeEntry($table, $where = NULL){
if($where != NULL){
$this->queryStr = "DELETE FROM `". $table ."` WHERE $where";
return $this->query($this->queryStr);
} else {
return false;
}
}
function getEntry($table, $fieldlist, $where=NULL, $whereon=NULL, $groupby = NULL){
$this->queryStr = "SELECT $fieldlist FROM ".$table;
if($whereon !== NULL)
$this->queryStr .= " ON $whereon";
if($where !== NULL)
$this->queryStr .= " WHERE $where";
if($groupby !== NULL)
$this->queryStr .= " GROUP BY $groupby";
return $this->query($this->queryStr);
}
function fetch_array($qResults, $recordType = NULL){
if($recordType == "MYSQL_NUM"){
return mysqli_fetch_array($qResults, MYSQL_NUM);
} elseif($recordType == "MYSQL_ASSOC"){
return mysqli_fetch_array($qResults, MYSQL_ASSOC);
} else {
return mysqli_fetch_array($qResults);
}
}
function fetch_object($qResults){
return mysqli_fetch_object($qResults);
}
function numrows($qResults){
if(!$qResults)
return false;
else
return mysqli_num_rows($qResults);
}
function getLastID(){
return mysqli_insert_id($this->connection);
}
function getQuery(){
return $this->queryStr;
}
function query($query){
if(!$query)
return false;
else
return mysqli_query($this->connection,$query);
}
};
?>
Je vos avertissements, mis en forme fixe une partie de votre capital et vous a fait l'audace cohérente. Vous devriez essayer de réduire une partie de votre code aux points pertinents cependant. – zero298
Pour savoir pourquoi vous voyez certaines de ces erreurs, '$ db' n'est pas défini dans la portée de la fonction au moment où vous utilisez' get_class() '. Dans votre ancienne configuration, vous n'avez peut-être pas eu error_reporting jusqu'à E_ALL, car cela aurait généré 'E_NOTICE variable non définie $ db'. L '"objet par défaut de la valeur vide" arrive maintenant parce que si vous avez eu error_reporting à E_ALL, avant 5.4 il n'a pas inclus les avertissements E_STRICT, mais plus tard. C'est une violation stricte. http://stackoverflow.com/questions/8900701/creating-default-object-from-empty-value-in-php –