is_int Fehler
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
arbeiten
aufgetreten code
ausgabe
bot
code
date
datei
datenbank
datum
fehler
file
http
not
null
set
show
string
system
teil
zahl
-
Mein Script erstellt eine SQL Backup Datei von meiner Datenbank. Mit if(is_int($this_contents[$field[$f]])) müsste überprüft sein ob der Insert-Wert eine Zahl ist, nur leider wird alles als String ungewandelt. Wo liegt mein Fehler?
Script:$path = dirname(__FILE__)."/save/"; $max_saves = 5; $datei_name = "Amity_BackUp_".date('d_m_Y__H_i_s').".sql"; $max_saves = 5; if(!is_dir($path)) { mkdir($path, 0755); } if($dir = opendir($path)) { while( false !== ($file = readdir($dir)) ) { if(($file != ".htaccess") && ($file != ".") && ($file != "..")) { $files_unlink[] = $file; } } if(count($files_unlink) != 0) { rsort($files_unlink); if (sizeof($files_unlink) >= $max_saves) { for($n = sizeof($files_unlink)-1; $n >= $max_saves-1; --$n) { unlink($path.$files_unlink[$n]); } } } closedir($dir); $datei = '-- -- Amity Datenbank Backup -- Erstellungsdatum: '.date("D d.m.Y H:i:s").' -- SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */;'; $db = new mysqli($db_host, $db_user, $db_pw, $db_name); $table_name = $db->query('SHOW TABLES FROM '.$db_name); while($table = $table_name->fetch_assoc()) { $table_create = $db->query('SHOW CREATE TABLE `'.$table['Tables_in_'.$db_name].'`'); $create = $table_create->fetch_row(); $create[1] = preg_replace("#CREATE TABLE#", "CREATE TABLE IF NOT EXISTS", $create[1]); $datei .= ' -- -- Tabellenstruktur für `'.$table['Tables_in_'.$db_name].'` -- DROP TABLE IF EXISTS `'.$table['Tables_in_'.$db_name].'`; '.$create[1].' ; '; $table_contents = $db->query('SELECT * FROM `'.$table['Tables_in_'.$db_name].'`'); if($table_contents->num_rows != 0) { $table_columns = $db->query('SHOW COLUMNS FROM `'.$table['Tables_in_'.$db_name].'`'); $columns = ''; $columns_num = 0; $columns_max = $table_columns->num_rows; while($this_columns = $table_columns->fetch_assoc()) { $columns .= ($columns_num == ($columns_max-1)) ? '`'.$this_columns['Field'].'`' : '`'.$this_columns['Field'].'`, '; $field[$columns_num] = $this_columns['Field']; ++$columns_num; } $datei .= ' -- -- Daten für `'.$table['Tables_in_'.$db_name].'` -- INSERT INTO `'.$table['Tables_in_'.$db_name].'` ('.$columns.') VALUES '; while($this_contents = $table_contents->fetch_assoc()) { $datei .= '('; $f = 0; while($f <= $columns_max-1) { if(is_int($this_contents[$field[$f]])) { $datei .= ($f == ($columns_max-1)) ? $this_contents[$field[$f]] : $this_contents[$field[$f]].", "; } else { $this_contents[$field[$f]] = str_replace("'", "''", $this_contents[$field[$f]]); $this_contents[$field[$f]] = preg_replace("#\r\n#", "\\r\\n", $this_contents[$field[$f]]); $datei .= ($f == ($columns_max-1)) ? "'".$this_contents[$field[$f]]."'" : "'".$this_contents[$field[$f]]."', "; } ++$f; } $datei .= ') '; } } } if($temp = fopen($path.$datei_name, 'w+')) { fwrite($temp, $datei); fclose($temp); } } echo (file_exists($path.$datei_name)) ? 'Das Datenbank Backup war erfolgreich.' : 'Es ist ein Fehler aufgetreten.';
Teil der Ausgabe:DROP TABLE IF EXISTS `bots`; CREATE TABLE IF NOT EXISTS `bots` ( `bot_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `bot_active` tinyint(1) unsigned DEFAULT '1', `bot_name` varchar(60) COLLATE utf8_bin NOT NULL, `bot_agent` varchar(40) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`bot_id`), KEY `bot_agent` (`bot_agent`) ) ENGINE=MyISAM AUTO_INCREMENT=105 DEFAULT CHARSET=utf8 COLLATE=utf8_bin ; -- -- Daten für `bots` -- INSERT INTO `bots` (`bot_id`, `bot_active`, `bot_name`, `bot_agent`) VALUES ('1', '0', 'Security System', 'http://') ('2', '1', 'Alexa [Bot]', 'ia_archiver')
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Was dir die Datenbank zurückgibt ist immer ein String. Ich weiß auch von keiner Möglichkeit das zu ändern. Du solltest, wenn du wirklich diese Überprüfung brauchst mit regulären Ausdrücken arbeiten.
-
Allerdings wollte ich nochmal anfügen, dass == true natürlich in einem if ziemlich sinnlos ist, aber denke doch, dass du das von selsbt korregiert hast.
-
reimann schrieb:
so pauschal hingeschrieben! ist das wirklich dein ernst????
... wollte ich nochmal anfügen, dass == true natürlich in einem if ziemlich sinnlos ist ...
lg -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage