kostenloser Webspace werbefrei: lima-city


is_int Fehler

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    siteplayer

    siteplayer hat kostenlosen Webspace.

    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')
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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.
  4. Benutz alternativ dieses:

    if(ctype_digit($this_contents[$field[$f]]) === true)
  5. Autor dieses Themas

    siteplayer

    siteplayer hat kostenlosen Webspace.

    Vielen Dank fabo :cookie:

    Funktioniert perfekt :biggrin:
  6. 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.:biggrin:
  7. reimann schrieb:
    ... wollte ich nochmal anfügen, dass == true natürlich in einem if ziemlich sinnlos ist ...
    so pauschal hingeschrieben! ist das wirklich dein ernst????

    lg
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!