DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Ribamar has posted 3 posts at DZone. View Full User Profile

Populate MySQL Tables

03.30.2007
| 11648 views |
  • submit to reddit
        This script in PHP to populate with demo data tables MySQL.
Remove the primary key before run.

<?php
/** Rotina para popular tabela do MySQL com massa de testes
  * Colaboração de Ribamar FS - http://ribafs.net - 14/03/2007
  * Requer remoção da chave primária antes da execução.
  */ 
?>

<html><head><title>Inserir Registros de Teste</title></head>
<body bgcolor=''>
<h2 align=center>Cadastrar Tabela do MySQL com Massa de Testes</h2>
<h3 align=center><font color=red>Remova chave primáia da tabela, antes de executar</font></h3>
<h4 align=center>Observe que nem todos os tipos de dados foram contemplados, alguns ficarão como string</h4>

<table align=center>
<form method='POST' name=frmIns action='popula_table.php'>

<tr><td>Host</td><td><input type=text name='host' value='127.0.0.1'></td></tr>
<tr><td>Banco</td><td><input type=text name='banco' value='cliente'></td></tr>
<tr><td>Usuáio</td><td><input type=text name='usuario' value='root'></td></tr>
<tr><td>Senha</td><td><input type=text name='senha'></td></tr>
<tr><td>Tabela</td><td><input type=text name='tabela' value='clientes'></td></tr>
<tr><td>Registros</td><td><input type=text name='registros' value=5></td></tr>
<tr><td></td><td><input type=submit name='popular' value='Popular'></td></tr>
</form>
</table>
</body>
</html>

<?php
if(isset($_POST['popular'])){
	$host=$_POST['host'];
	$banco=$_POST['banco'];
	$usuario=$_POST['usuario'];
	$senha=$_POST['senha'];
	$tabela=$_POST['tabela'];
	$registros=$_POST['registros'];
	$numericos=$_POST['numericos'];

	$conexao=mysql_connect($host,$usuario,$senha);
	if ($conexao){
		$sel=mysql_select_db($banco,$conexao);
		if(!$sel) die('Erro ao selecionar o banco'.mysql_error());
	}else{
		die ('Erro ao conectar ao banco '.mysql_error());
	}
	$str="SELECT * FROM $tabela";
	$consulta= mysql_query($str,$conexao);
	$nc=mysql_num_fields($consulta);
	$nr=mysql_num_rows($consulta);

   $n='';//numericos (int, tinyint, smallint, bigint, etc)
   $r=''; //reais (float e double)
   $s="'";//strings
   $d=date('Y-m-d'); //datas
   $dt=date('Y-m-d H:i:s');//datatimes
   $o=''; //outros

   	$inscod .="INSERT INTO $tabela (";
   	for ($j = 0; $j < $nc; $j++) {
      $campo = mysql_field_name($consulta, $j);
		if ($j < $nc-1)	$inscod .= "$campo,";
     	else $inscod .= "$campo";
	}
	$inscod .= ")";	 
    $inscod .= " VALUES (";

   for ($j = 0; $j < $nc; $j++) {   
   $tam   = mysql_field_len($consulta, $j);
   //if(($tam)>20) $tam=20; //Caso queira limitar os campos ao máximo de 20 posições
		if ($j < $nc-1){ 
			switch (mysql_field_type($consulta, $j)){
				case 'int':
					$n=str_pad($n,$tam,'12345679890');
					$inscod .= "$n,";
					break;
     			case 'real':
					$r=str_pad($r,$tam,'1234567890');
					$inscod .= "$r,";
					break;
				case 'string':
					$s=str_pad($s,$tam,"abcdefghijklmnopqrstuvxyz");
					$inscod .= "$s',";
					break;
				case 'date':
		 		    $inscod .= "'$d',";
					break;
     			case 'datetime':
				case 'timestamp':
					$inscod .= "'$dt',";
					break;
				case 'blog':
					$inscod .= "'$t'";
					break;
				default:
					$o=str_pad($o,$tam,"abcdefghijklmnopqrstuvxyz");
					$inscod .= "'$o',";
					break;
			}
     	}else{
     		switch (mysql_field_type($consulta, $j)){
				case 'int':
					$n=str_pad($n,$tam,'1234567890');
					$inscod .= "$n";
					break;
     			case 'real':
					$r=str_pad($r,$tam,'1234567890');
					$inscod .= "$r";
					break;
     			case 'string':
					$s=str_pad($s,$tam,"abcdefghijklmnopqrstuvxyz");
					$inscod .= "$s'";
					break;
				case 'date':
					$inscod .= "'$d'";
					break;
	     		case 'datetime':
				case 'timestamp':
					$inscod .= "'$dt'";
					break;
				case 'blog':
					$inscod .= "'$t'";
					break;
				default:
					$o=str_pad($o,$tam,"abcdefghijklmnopqrstuvxyz");
					$inscod .= "'$o'";
					break;
     		}
     	}
     	
	}
    $inscod .=");";	
	
    for($r=1;$r<=$registros;$r++){	   
		//echo  $inscod;
	   	if(!mysql_query($inscod,$conexao)) die ("Erro na inclusão".mysql_error());
    }	   
}
?>