WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 21.12.2016 15:17:40

florian
Administrator

Fehler Topics upgrade.php unter PHP7

In der upgrade.php sorgt mysql_error() für einen Abbruch des Scripts und damit auch des Upgrade-Scripts für WBCE 1.1.8ff.

Mein Ansatz ist, das mysql_error durch mysqli_error zu ersetzen. Da mysqli_error allerdings als Parameter die mysqli-DB-Verbindung benötigt, und ich leider nicht weiß, ob und wie man da elegant rankommt, habe ich noch eine solche ergänzt.

Alt:

global $database;
global $admin;

$mod_dir = basename(dirname(__FILE__));
$tablename = $mod_dir;

$query = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_".$mod_dir);
$fetch = $query->fetchRow();	
// Add field groups_id
if(!isset($fetch['groups_id'])){
	if($database->query("ALTER TABLE `".TABLE_PREFIX."mod_".$mod_dir."` ADD `groups_id` VARCHAR(255) NOT NULL DEFAULT ''")) {
		echo '<span class="good">Database Field groups_id added successfully</span><br />';
	}
		echo '<span class="bad">'.mysql_error().'</span><br />';
} else {
	echo '<span class="ok">Database Field groups_id exists, update not needed</span><br />';
}
	
$query = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_".$mod_dir.'_comments');
$fetch = $query->fetchRow();	
// Add field commentextra
if(!isset($fetch['commentextra'])){
	if($database->query("ALTER TABLE `".TABLE_PREFIX."mod_".$mod_dir."_comments` ADD `commentextra` VARCHAR(255) NOT NULL DEFAULT ''")) {
		echo '<span class="good">Database Field commentextra added successfully</span><br />';
	}
		echo '<span class="bad">'.mysql_error().'</span><br />';
} else {
	echo '<span class="ok">Database Field commentextra exists, update not needed</span><br />';
}	
	

Neu:

global $database;
global $admin;

if (defined('DB_PORT')) {
            $port = DB_PORT;
        } else {
            $port = ini_get('mysqli.default_port');
        }
$checkmysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME, $port);

$mod_dir = basename(dirname(__FILE__));
$tablename = $mod_dir;

$query = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_".$mod_dir);
$fetch = $query->fetchRow();	
// Add field groups_id
if(!isset($fetch['groups_id'])){
	if($database->query("ALTER TABLE `".TABLE_PREFIX."mod_".$mod_dir."` ADD `groups_id` VARCHAR(255) NOT NULL DEFAULT ''")) {
		echo '<span class="good">Database Field groups_id added successfully</span><br />';
	}
		echo '<span class="bad">'.mysqli_error($checkmysqli).'</span><br />';
} else {
	echo '<span class="ok">Database Field groups_id exists, update not needed</span><br />';
}
	
$query = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_".$mod_dir.'_comments');
$fetch = $query->fetchRow();	
// Add field commentextra
if(!isset($fetch['commentextra'])){
	if($database->query("ALTER TABLE `".TABLE_PREFIX."mod_".$mod_dir."_comments` ADD `commentextra` VARCHAR(255) NOT NULL DEFAULT ''")) {
		echo '<span class="good">Database Field commentextra added successfully</span><br />';
	}
		echo '<span class="bad">'.mysqli_error($checkmysqli).'</span><br />';
} else {
	echo '<span class="ok">Database Field commentextra exists, update not needed</span><br />';
}	
	

Damit läuft das Upgrade zumindest durch.
Ist das richtig so? Kann man das auch eleganter lösen? Muss die DB-Verbindung noch irgendwie wieder geschlossen werden?


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#2 21.12.2016 18:10:22

grindbatzn
Gast

Re: Fehler Topics upgrade.php unter PHP7

Ich hab die Zeilen mit mysql_error() einfach entfernt.
Wenn diese alten Felder immer noch nicht da sind, hats sowieso was gröberes.

#3 22.12.2016 19:21:39

norhei
Developer

Re: Fehler Topics upgrade.php unter PHP7

Offline

Liked by:

florian, thanks

#4 19.01.2017 18:59:01

florian
Administrator

Re: Fehler Topics upgrade.php unter PHP7

Ich habe im AOR eine aktualisierte Version hochgeladen, in der das Problem mit mysql_error nicht mehr auftritt.
http://addons.wbce.org/?do=item&item=8


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Fußzeile des Forums

up