Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

visitante_php

"nao eh possivel 'catalogar' os erros no PHP" : kem

Recommended Posts

desculpem pelo titulo indevido mas eu gostaria dessa ajuda, me disseram nao ser possivel catalogar os erros do php como eu fiz num outro topico com o mysql...eu achei esse scritp na net, ele cria um arquivo d log de erros...

 

 

<?php

function error($numero,$texto){
	
$ddf = fopen('error.log','a');

fwrite($ddf,"[".date("r")."] Error $numero:$texto\r\n");

fclose($ddf);

}

set_error_handler('error');

?>

 

eu usei esse codigo aki pra testar...

 

 

<?php

// Se nao existe a cookie sessao

if(!isset($_COOKIE['sessao'])){
	
// Salvamos um erro

error('001','Nao existe a cookie de sessao');

}

if(!defined(IGOR)){
	
	error('002','Nao definida a constante IGOR');
	
}

?>

 

e o q ele cria eh isso...

 

[Thu, 07 Feb 2008 21:23:02 -0200] Error 001:Nao existe a cookie de sessao
[Thu, 07 Feb 2008 21:23:02 -0200] Error 8:Use of undefined constant IGOR - assumed 'IGOR'
[Thu, 07 Feb 2008 21:23:02 -0200] Error 002:Nao definida a constante IGOR

se compararem o script com o log criado, verao q o script so esta programado para criar o error 002 e 001, o 8 nao foi programado para criar, o proprio php o criou, e com um indice, provando q eh possivel "catalogar" seus erros...alguem poderia me ajudar...?

Compartilhar este post


Link para o post
Compartilhar em outros sites

da pra você explicar qual o contexto em que isso vai ser aplicado?

assim facilitaria + pra gente (pelo menos pra mim) explicar, + da pra ser catalogado sim...

tem classes no phpclasses.org q fazem isso, precisando apenas de adaptações de acordo com a necessidade ^^

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retire o set_error_handler() e teste de novo. Veja que essa função não exibe os erros na tela, mas os salva num arquivo de log de erros.

 

 

que massa!!

Vivendo e aprendendo. Essa eu também não sabia. :D

 

 

http://www.php.net/set_error_handler

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria interessante tbm se você usasse o 3º e 4º parametro na função manipuladora.

eles sao opcionais, + eles ajudariam a identificar o erro de maneira mais eficiente

 

Abraços

 

PS: Pensei q você queria uma classe pra construir uma arvore baseado no relatorio de erros.

eu uso uma classe q organiza os erros de acordo com o nivel ou categoria

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu pensei em fazer o php pirar com erros, pra ele gerar seu catalogo e eu criar o meu (Beraldo),

 

eu estou criando um sistema CMS, e queria implementar muitas coisas, mas eu so sabia o echo, com esse projeto, eu estou aprendendo a programar...e eu vou usar em uma funcao simples, so para os erros serem reportados...para mim para q eu possa conserta-los e melhora-los..(Dórian), as classes do phpclasses.org eu nao consigo usar, estou criando minhas proprias, inclusive se kiser dar uma olhada, eu coloquei um topico de classe de template para esse sistema, pra criar um temaplte dinamicamente e maleavel...so q saiu como picasso, desfigurado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

gostei da comparação com "picasso", foi bem criativa... ^^

eu gostaria sim de dar uma olhada na sua classe, e eu naum gosto de usar as classes do phpclasses.org (+ quando eu to com preguiça de criar uma pra ajudar o pessoal do forum eu recomendo o phpclasses msm ^^)

e os parametros q eu citei você pode crescentalos na sua função error(), ela é enviada por padrão para qualquer q seja a função q esteja manipulando os erros (de uma olhada no link q o Beraldo mandou)

Compartilhar este post


Link para o post
Compartilhar em outros sites

pra quem tem um sistema já pronto existe algum código q basta inserir no final/inicio de cada página q ele reporta o erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é que eu teria q reescrever todos os arquivos e depois upar, qdo envio alguns arquivos eles não vão inteiro as vzs tem q upar de novo, enfim acho q vai dar uma trabalheira, mas qdo tiver um novo sistema para fazer você inserir essa reportagem de erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você naum precisa modificar todos os arquivos...

se você tiver um arquivo global em seu site, como por exemplo, um arquivo pra conexao MySQL ou um arquivo init.php (pra definir configurações do sistema) ou ainda, um arquivo pra checar se a pessoa esta autenticada ou naum...

enfim, qualquer include (ou require) q esteja presente na maioria de suas paginas, se você tiver um arquivo desse em seu site, basta aplicar o exemplo do Igor dentro desse documento...

Compartilhar este post


Link para o post
Compartilhar em outros sites

so q esse meu exemplo nao esta completo, ao meu ver...eu keria fazer esse igual a esse aki e irei postar...so q esse eh do mysql q o beraldo me ajudou a criar...

 

 

esse arquivo eh a lista de possiveis erros

 

<?php

/**
 * @author in Luar
 * @copyright 2008
 * @email espiritodocoracao@hotmail.com
 */

/**
 * @description Lista de erros MySQL para operações com o servidor MySQL
 */
 


$erroMySQL[1005] = "Não é possível criar a tabela %s!";

$erroMySQL[1006] = "Não pode criar o banco de dados %s!";

$erroMySQL[1007] = "Este banco de dados já existe!";

$erroMySQL[1008] = "Não pode eliminar o banco de dados %s. Este banco não existe!";

$erroMySQL[1012] = "Não pode ler um registro numa tabela do sistema!";

$erroMySQL[1022] = "Não pode gravar! Chave duplicada na tablea %s!";

$erroMySQL[1032] = "Registro nao encontrado!";

$erroMySQL[1040] = "Excesso de conexões";

$erroMySQL[1044] = "Acesso negado ao usuário '%s'@'%s' ao banco de dados!";

$erroMySQL[1045] = "Acesso negado para o usuário '%s'@'%s'(senha usada: %s)";

$erroMySQL[1046] = "Nenhum banco de dados selecionado!";

$erroMySQL[1049] = "Banco de dados desconhecido: '%s'";

$erroMySQL[1050] = "Tabela '%s' já existe!";

$erroMySQL[1051] = "Tabela '%s' desconhecida!";

$erroMySQL[1061] = "Nome da chave duplicada!";

$erroMySQL[1062] = "Entrada '%s' duplicada para a chave '%d'!";

$erroMySQL[1102] = "Nome de banco de dados incorreto: '%s'!";

$erroMySQL[1103] = "Nome de tabela incorreto: '%s'!";

$erroMySQL[1146] = "Tabela '%s.%s' não existe!";

$erroMySQL[2000] = "Erro desconhecido no MySQL!";

$erroMySQL[2003] = "Não é possível conectar ao servidor Host em '%s'";

$erroMySQL[2005] = "Servidor Host MySQL desconhecido!";

$erroMySQL[2013] = "Conexão perdida ao servidor MySQL durante consulta!";

?>

 

ja esse eh o q vai mostrar os erros....

 

 

<?php

/**
 * @author in Luar
 * @copyright 2008
 * @email espiritodocoracao@hotmail.com
 */

/**
 * @description Função para mostrar o erro do MySQL
 */
//require('../../config.php');
//require('../../errors/lib/err.lib.mysql_sys.php');
function erroMySQL(){
	global $erroMySQL;
	$erroCodigo_MySQL = mysql_errno();
	if(array_key_exists($erroCodigo_MySQL, $erroMySQL)){
		echo $erroMySQL[$erroCodigo_MySQL].'<br>';
	}else{
		echo '['.mysql_errno().']'.mysql_error();
	}
}

?>

 

 

e aki uma utilizacao desses arquivos...

 

<?php
function conectar($host,$user,$pass,$db){

		$conexao = @mysql_connect($host, $user, $pass);

		if($conexao){

			$this->status = "Host conectado!<br>";

			echo $this->status;

			if($this->status){

				$sel_db = mysql_select_db($db);

				if($sel_db){

					$this->status_sel_db = "Db selecionado!<br>";

					echo $this->status_sel_db;

				}else{

					$this->status_sel_db = false;

					$this->erro = erroMySQL();

					echo $this->erro;

				}

			}

		}else{

				$this->status = false;

				$this->erro = erroMySQL();

				echo $this->erro;

			}

	}

?>

retirado de uma classe q estoucriando para meu sistema...

 

 

so q ainda nao resolvemos este topico, como eu pegaria os erros do php para catalogar...?

Compartilhar este post


Link para o post
Compartilhar em outros sites

de uma lida em:

http://www.php.net/manual/pt_BR/ref.errorfunc.php

 

ate onde eu conheço de PHP, naum existe nele um codigo especifico para cada erro, existem codigos para as categorias dos erros, como:

2	E_WARNING	   Avisos em tempo de execução (erros não fatais). A execução do script não é interrompida.
4	E_PARSE		 Erro em tempo de compilação. Erros gerados pelo interpretador.

de uma lida com calma no link, acho q ira esclarecer as suas duvidas ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu andei olhando nos sites q eu criei no dreamweaver, achei algo parecido...

 

<?php

[b]// If this file is not included from the MMHTTPDB possible hacking problem.

if (!function_exists('create_error')){

	die();

}

define('MYSQL_NOT_EXISTS', create_error("Your PHP server doesn't have the MySQL

 module loaded or you can't use the mysql_(p)connect functions."));

define('CONN_NOT_OPEN_GET_TABLES', create_error('The Connection could not be opened

 when trying to retrieve the tables.'));

define('CONN_NOT_OPEN_GET_DB_LIST', create_error('The Connection could not be opened

 when trying to retrieve the database list.'));
			 
if (!function_exists('mysql_connect') || !function_exists('mysql_pconnect') || 

!extension_loaded('mysql')){

	echo MYSQL_NOT_EXISTS;

	die();

}

// Now let's handle the crashes or any other PHP errors that we can catch

function KT_ErrorHandler($errno, $errstr, $errfile, $errline) { 

	global $f, $already_sent;

	$errortype = array ( 

		1   =>  "Error", 

		2   =>  "Warning", 

		4   =>  "Parsing Error", 

		8   =>  "Notice", 

		16  =>  "Core Error", 

		32  =>  "Core Warning", 

		64  =>  "Compile Error", 

		128 =>  "Compile Warning", 

		256 =>  "User Error", 

		512 =>  "User Warning", 

		1024=>  "User Notice",

		2048=>  "E_ALL",

		2049=>  "PHP5 E_STRICT"

	);

	$str = sprintf("[%s]\n%s:\t%s\nFile:\t\t'%s'\nLine:\t\t%s\n\n", date('d-m-Y H:i
	
	:s'),(isset($errortype[@$errno])?$errortype[@$errno]:('Unknown '.$errno)),
	
	@$errstr,@$errfile,@$errline);
	
	if (error_reporting() != 0) {
	
			@fwrite($f, $str);
	
			if (@$errno == 2 && isset($already_sent) && !$already_sent==true){
	
				$error = '<ERRORS>'."\n";
	
				$error .= '<ERROR><DESCRIPTION>An Warning Type error appeared. The 
				
				error is logged into the log file.</DESCRIPTION></ERROR>'."\n";
				
				$error .= '</ERRORS>'."\n";
				
				$already_sent = true;
				
				echo $error;
			
			}
			
	}

}
[/b]
if ($debug_to_file){

		$old_error_handler = set_error_handler("KT_ErrorHandler");

}

class MySqlConnection

{

/*

 // The 'var' keyword is deprecated in PHP5 ... we will define these variables at
 
 // runtime.
 
  var $isOpen;

	var $hostname;

	var $database;

	var $username;

	var $password;

	var $timeout;

	var $connectionId;

	var $error;

*/

	function MySqlConnection($ConnectionString, $Timeout, $Host, $DB, $UID, $Pwd)

	{

		$this->isOpen = false;

		$this->timeout = $Timeout;

		$this->error = '';

		if( $Host ) { 

			$this->hostname = $Host;

		}

		elseif( preg_match("/host=([^;]+);/", $ConnectionString, $ret) )  {

			$this->hostname = $ret[1];

		}
		
		if( $DB ) {

			$this->database = $DB;

		}
		
		elseif( preg_match("/db=([^;]+);/",   $ConnectionString, $ret) ) {
		
			$this->database = $ret[1];
		
		}
		
		if( $UID ) {
		
			$this->username = $UID;
		
		}
		
		elseif( preg_match("/uid=([^;]+);/",  $ConnectionString, $ret) ) {
		
			$this->username = $ret[1];
		
		}
		
		if( $Pwd ) {
		
			$this->password = $Pwd;
		
		}
		
		elseif( preg_match("/pwd=([^;]+);/",  $ConnectionString, $ret) ) {
		
			$this->password = $ret[1];
		
		}
	
	}

	function Open()
	
	{
	
	  $this->connectionId = mysql_connect($this->hostname, $this->username,
	  
	   $this->password);
	
		if (isset($this->connectionId) && $this->connectionId && 
		
		is_resource($this->connectionId))
		
		{
		
			$this->isOpen = ($this->database == "") ? true :
			
			 mysql_select_db($this->database, $this->connectionId);
		
		}
		
		else
		
		{
		
			$this->isOpen = false;
		
		}	
	
	}

	function TestOpen()
	
	{
	
		return ($this->isOpen) ? '<TEST status=true></TEST>' : 
		
		$this->HandleException();
	
	}

	function Close()
	
	{
	
		if (is_resource($this->connectionId) && $this->isOpen)
	
		{
	
			if (mysql_close($this->connectionId))
	
			{
	
				$this->isOpen = false;
	
				unset($this->connectionId);
	
			}
	
		}
	
	}

	function GetTables($table_name = '')
	
	{
	
		$xmlOutput = "";
	
		if ($this->isOpen && isset($this->connectionId) &&
		
		 is_resource($this->connectionId)){
		
			// 1. mysql_list_tables and mysql_tablename are deprecated in PHP5
		
			// 2. For backward compatibility GetTables don't have any parameters
		
			if ($table_name === ''){
		
					$table_name = @$_POST['Database'];
		
			}
		
			//added backtick for handling reserved words and special characters
		
			//http://dev.mysql.com/doc/refman/5.0/en/legal-names.html
		
			$sql = ' SHOW TABLES FROM ' . $this->ensureTicks($table_name);
		
			$results = mysql_query($sql, $this->connectionId) or 
			
			$this->HandleException();

			$xmlOutput = "<RESULTSET><FIELDS>";

			// Columns are referenced by index, so Schema and
			
			// Catalog must be specified even though they are not supported

			$xmlOutput .= '<FIELD><NAME>TABLE_CATALOG</NAME></FIELD>';		
			
			// column 0 (zero-based)
			
			$xmlOutput .= '<FIELD><NAME>TABLE_SCHEMA</NAME></FIELD>';		
			
			// column 1
			
			$xmlOutput .= '<FIELD><NAME>TABLE_NAME</NAME></FIELD>';		
			
			// column 2

			$xmlOutput .= "</FIELDS><ROWS>";

			if (is_resource($results) && mysql_num_rows($results) > 0){
			
					while ($row = mysql_fetch_array($results)){
			
							$xmlOutput .= '<ROW><VALUE/><VALUE/><VALUE>' . 
							
							$row[0]. '</VALUE></ROW>';	
					
					}
			
			}
			
			$xmlOutput .= "</ROWS></RESULTSET>";

	}
	
		return $xmlOutput;
	
	}

	function GetViews()
	
	{
	
		// not supported
	
		return "<RESULTSET><FIELDS></FIELDS><ROWS></ROWS></RESULTSET>";
	
	}

	function GetProcedures()
	
	{
	
		// not supported
	
			return "<RESULTSET><FIELDS></FIELDS><ROWS></ROWS></RESULTSET>";
	
	}

	function GetColumnsOfTable($TableName)
	
	{
	
		$xmlOutput = "";
	
		//added backtick for handling reserved words and special characters
	
		//http://dev.mysql.com/doc/refman/5.0/en/legal-names.html
	
		$query  = "DESCRIBE ".$this->ensureTicks($TableName);
	
		$result = mysql_query($query) or $this->HandleException();

		if ($result)

		{

			$xmlOutput = "<RESULTSET><FIELDS>";

			// Columns are referenced by index, so Schema and

			// Catalog must be specified even though they are not supported

			$xmlOutput .= "<FIELD><NAME>TABLE_CATALOG</NAME></FIELD>";		
			
			//		 column 0 (zero-based)
			
			$xmlOutput .= "<FIELD><NAME>TABLE_SCHEMA</NAME></FIELD>";		
			
			// column 1
			
			$xmlOutput .= "<FIELD><NAME>TABLE_NAME</NAME></FIELD>";			
			
			// column 2
			
			$xmlOutput .= "<FIELD><NAME>COLUMN_NAME</NAME></FIELD>";
			
			$xmlOutput .= "<FIELD><NAME>DATA_TYPE</NAME></FIELD>";
			
			$xmlOutput .= "<FIELD><NAME>IS_NULLABLE</NAME></FIELD>";
			
			$xmlOutput .= "<FIELD><NAME>COLUMN_SIZE</NAME></FIELD>";

			$xmlOutput .= "</FIELDS><ROWS>";

			// The fields returned from DESCRIBE are: Field, Type, Null,
			// Key, Default, Extra
			
			while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
			
			{
			
				$xmlOutput .= "<ROW><VALUE/><VALUE/><VALUE/>";

				// Separate type from size. Format is: type(size)
			
				if (preg_match("/(.*)\((.*)\)/", $row["Type"], $ret))
			
				{
			
					$type = $ret[1];
			
					$size = $ret[2];
			
				}
			
				else
			
				{
			
					$type = $row["Type"];
			
					$size = "";
			
				}

				// MySQL sets nullable to "YES" or "", so we need to set "NO"

				$null = $row["Null"];

				if ($null == "")

					$null = "NO";

				$xmlOutput .= "<VALUE>" . $row["Field"] . "</VALUE>";

				$xmlOutput .= "<VALUE>" . $type		 . "</VALUE>";

				$xmlOutput .= "<VALUE>" . $null		 . "</VALUE>";

				$xmlOutput .= "<VALUE>" . $size		 . "</VALUE></ROW>";

			}

			mysql_free_result($result);

			$xmlOutput .= "</ROWS></RESULTSET>";

		}

		return $xmlOutput;

	}

	function GetParametersOfProcedure($ProcedureName, $SchemaName, $CatalogName)

	{

		// not supported on MySQL

		return '<RESULTSET><FIELDS></FIELDS><ROWS></ROWS></RESULTSET>';

	}

	function ExecuteSQL($aStatement, $MaxRows)

	{

		if ( get_magic_quotes_gpc() )

		{

				$aStatement = stripslashes( $aStatement );

		}

		$xmlOutput = "";

		$result = mysql_query($aStatement) or $this->HandleException();
		
		if (isset($result) && is_resource($result))

		{

			$xmlOutput = "<RESULTSET><FIELDS>";

			$fieldCount = mysql_num_fields($result);

			for ($i=0; $i < $fieldCount; $i++)

			{

				$meta = mysql_fetch_field($result);

				if ($meta)

				{

					$xmlOutput .= '<FIELD';

					$xmlOutput .= ' type="'				. $meta->type;

					$xmlOutput .= '" max_length="'	. $meta->max_length;

					$xmlOutput .= '" table="'			  . $meta->table;

					$xmlOutput .= '" not_null="'		. $meta->not_null;

					$xmlOutput .= '" numeric="'		  . $meta->numeric;

					$xmlOutput .= '" unsigned="'		. $meta->unsigned;

					$xmlOutput .= '" zerofill="'		. $meta->zerofill;

					$xmlOutput .= '" primary_key="'	. $meta->primary_key;

					$xmlOutput .= '" multiple_key="'. $meta->multiple_key;

					$xmlOutput .= '" unique_key="'	. $meta->unique_key;

					$xmlOutput .= '"><NAME>'			  . $meta->name;

					$xmlOutput .= '</NAME></FIELD>';

				}

			}

			$xmlOutput .= "</FIELDS><ROWS>";

			$row = mysql_fetch_assoc($result);

			for ($i=0; $row && ($i < $MaxRows); $i++)

			{

				$xmlOutput .= "<ROW>";

				foreach ($row as $key => $value)

				{

					$xmlOutput .= "<VALUE>";

					$xmlOutput .= htmlspecialchars($value);

					$xmlOutput .= "</VALUE>";

				}

 				$xmlOutput .= "</ROW>";

				$row = mysql_fetch_assoc($result);

			}

			mysql_free_result($result);

			$xmlOutput .= "</ROWS></RESULTSET>";

		}

		return $xmlOutput;

	}

	function GetProviderTypes()

	{

		return '<RESULTSET><FIELDS></FIELDS><ROWS></ROWS></RESULTSET>';

	}

	function ExecuteSP($aProcStatement, $TimeOut, $Parameters)

	{

		return '<RESULTSET><FIELDS></FIELDS><ROWS></ROWS></RESULTSET>';

	}

	function ReturnsResultSet($ProcedureName)

	{

		return '<RETURNSRESULTSET status=false></RETURNSRESULTSET>';

	}

	function SupportsProcedure()

	{	

		return '<SUPPORTSPROCEDURE status=false></SUPPORTSPROCEDURE>';

	}

	/*

	*  HandleException added by InterAKT for ease in database translation answer

	*/

	function HandleException()

	{

		global $debug_to_file, $f;

		$this->error = create_error(' MySQL Error#: '. ((int)mysql_errno()) . "\n\n"
		
		.mysql_error());
		
		log_messages($this->error);
		
		die($this->error.'</HTML>');
	
	}

	function ensureTicks($inputSQL)
	
	{
	
		$outSQL = $inputSQL;
	
		//added backtick for handling reserved words and special characters
	
		//http://dev.mysql.com/doc/refman/5.0/en/legal-names.html

		//only add ticks if not already there

		$oLength = strlen($outSQL);

		$bHasTick = false;

		if (($oLength > 0) && (($outSQL[0] == "`") && ($outSQL[$oLength-1] == "`")))

		{

			$bHasTick = true;

		}

		if ($bHasTick == false)

		{

			$outSQL = "`".$outSQL."`";

		}

		return $outSQL;

	}

	function GetDatabaseList()

	{

		$xmlOutput = '<RESULTSET><FIELDS><FIELD><NAME>NAME</NAME></FIELD></FIELDS>
		
		<ROWS>';

		if (isset($this->connectionId) && is_resource($this->connectionId)){
		
				$dbList = mysql_list_dbs($this->connectionId);
		
						while ($row = mysql_fetch_object($dbList))
		
				{
		
					$xmlOutput .= '<ROW><VALUE>' . $row->Database . '</VALUE></ROW>'
					
				;
					
				}
	
	}else{
	
				$this->error = CONN_NOT_OPEN_GET_DB_LIST;
	
				return $this->error;
	
		}
	
		$xmlOutput .= '</ROWS></RESULTSET>';

		return $xmlOutput;

	}

	function GetPrimaryKeysOfTable($TableName)

	{

		$xmlOutput = '';

		//added backtick for handling reserved words and special characters

		//http://dev.mysql.com/doc/refman/5.0/en/legal-names.html

		$query  = "DESCRIBE ".$this->ensureTicks($TableName);

		$result = mysql_query($query) or $this->HandleException();

		if ($result)

		{

			$xmlOutput = '<RESULTSET><FIELDS>';

			// Columns are referenced by index, so Schema and

			// Catalog must be specified even though they are not supported

			$xmlOutput .= '<FIELD><NAME>TABLE_CATALOG</NAME></FIELD>';		
			
			//			 column 0 (zero-based)
			
			$xmlOutput .= '<FIELD><NAME>TABLE_SCHEMA</NAME></FIELD>';		
			
			// column 1
			
			$xmlOutput .= '<FIELD><NAME>TABLE_NAME</NAME></FIELD>';			
			
			// column 2
			
			$xmlOutput .= '<FIELD><NAME>COLUMN_NAME</NAME></FIELD>';
			
			$xmlOutput .= '<FIELD><NAME>DATA_TYPE</NAME></FIELD>';
			
			$xmlOutput .= '<FIELD><NAME>IS_NULLABLE</NAME></FIELD>';
			
			$xmlOutput .= '<FIELD><NAME>COLUMN_SIZE</NAME></FIELD>';

			$xmlOutput .= '</FIELDS><ROWS>';

			// The fields returned from DESCRIBE are: Field, Type,
			
			// Null, Key, Default, Extra
			
			while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
			
			{
			
			  if (strtoupper($row['Key']) == 'PRI'){
			  
				  $xmlOutput .= '<ROW><VALUE/><VALUE/><VALUE/>';
  
				  // Separate type from size. Format is: type(size)
			  
				  if (preg_match("/(.*)\((.*)\)/", $row['Type'], $ret))
			  
				  {
			  
					  $type = $ret[1];
			  
					  $size = $ret[2];
			  
				  }
			  
				  else
			  
				  {
			  
					  $type = $row['Type'];
			  
					  $size = '';
			  
				  }
  
				  // MySQL sets nullable to "YES" or "", so we need to set "NO"
			  
				  $null = $row['Null'];
			  
				  if ($null == '')
			  
					  $null = 'NO';
  
					$xmlOutput .= '<VALUE>' . $row['Field'] . '</VALUE>';
			  
				  $xmlOutput .= '<VALUE>' . $type		 . '</VALUE>';
			  
				  $xmlOutput .= '<VALUE>' . $null		 . '</VALUE>';
			  
				  $xmlOutput .= '<VALUE>' . $size		 . '</VALUE></ROW>';
			  
			  }
			  
			}
			
			mysql_free_result($result);

			$xmlOutput .= '</ROWS></RESULTSET>';
		
		}
		
		return $xmlOutput;
	
	}

}	

// class MySqlConnection

?>

 

eh uma classe criada por ele, mas olha a funcao em negrito, sera q ele cataloga os erros...?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.