Jump to content

query recursiva


IvanGS
 Share

Recommended Posts

boas pessoal, tou aqui com um grnade problema para mim.

é o seguinte, quero fazer um query a uma BD, mas nao importo qual tabela nem o numero de campos.

uma vez que ele vais listar o nome das colunas da tabelas, e os registo la dentro.

o problema e como e que eu vou fazer para mostrar os registos.

tenho o código assim:

<?php
ob_start();
$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$nome_da_tabela=$_POST['nome_tabela'];
$nome_do_campo=$_POST['nome_campo'];

// To protect MySQL injection (more detail about MySQL injection)
$nome_da_tabela = stripslashes($nome_da_tabela);
$nome_do_campo = stripslashes($nome_do_campo);

$sql_correio="SELECT * FROM correio";

$result_correio=mysql_query($sql_correio);


while ($row = mysql_fetch_assoc($result_correio)) 
	{	//mysql_num_fields
		$rowcount=mysql_num_rows($result_correio);
		$y=mysql_num_fields($result_correio);
		for ($x=0; $x<$y; $x++) 
			{
				//mostra o nome das colunas da BD
				//echo $x.'<br>';
				//echo mysql_field_name($result_correio, $x);
				echo $x." -> ".mysql_field_name($result_correio, $x).':<br>';
				$registos = mysql_field_name($result_correio, $x)
				echo mysql_fetch_assoc($registos);
				//$campos = mysql_fetch_assoc($result_correio);

			}
	}
//header("location:mostra_dados.php");
ob_end_flush();
?>

alguém me pode ajudar?

Link to comment
Share on other sites

ja nao e preciso 🙂 reparei num erro

(tou nisto desde as 9 da manha)

a solução ficou assim, deixo aqui se algúem precisar


<?php
ob_start();
$host=o"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$nome_da_tabela=$_POST['nome_tabela'];
$nome_do_campo=$_POST['nome_campo'];

// To protect MySQL injection (more detail about MySQL injection)
$nome_da_tabela = stripslashes($nome_da_tabela);
$nome_do_campo = stripslashes($nome_do_campo);

$sql_correio="SELECT * FROM correio";

$result_correio=mysql_query($sql_correio);


while ($row = mysql_fetch_assoc($result_correio)) 
	{	//mysql_num_fields
		$rowcount=mysql_num_rows($result_correio);
		$y=mysql_num_fields($result_correio);
		for ($x=0; $x<$y; $x++) 
			{
				//mostra o nome das colunas da BD
				//echo $x.'<br>';
				//echo mysql_field_name($result_correio, $x);

				echo $x." -> ".mysql_field_name($result_correio, $x).':<br>';
				$teste = mysql_field_name($result_correio, $x);
				echo $row[$teste];
				//$registos = mysql_field_name($result_correio, $x)
				//echo mysql_fetch_assoc($registos);
				//$campos = mysql_fetch_assoc($result_correio);

			}echo "<br>";
	}
//header("location:mostra_dados.php");
ob_end_flush();
?>

Link to comment
Share on other sites

boas pessoal, tou aqui com um grnade problema para mim.

é o seguinte, quero fazer um query a uma BD, mas nao importo qual tabela nem o numero de campos.

uma vez que ele vais listar o nome das colunas da tabelas, e os registo la dentro.

o problema e como e que eu vou fazer para mostrar os registos.

tenho o código assim:

<?php
ob_start();
$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");


$nome_da_tabela=mysql_real_escape_string($_POST['nome_tabela']);//Save CPU and code by joining these 2 instructions like this:
$nome_do_campo= mysql_real_escape_string($_POST['nome_campo']);

$sql_correio="SELECT * FROM correio";

$result_correio=mysql_query($sql_correio);


while ($row = mysql_fetch_assoc($result_correio)) 
	{	//mysql_num_fields
		$rowcount=mysql_num_rows($result_correio);
		$y=mysql_num_fields($result_correio);
		for ($x=0; $x<$y; $x++) 
			{
				//mostra o nome das colunas da BD
				//echo $x.'<br>';
				//echo mysql_field_name($result_correio, $x);
				echo $x." -> ".mysql_field_name($result_correio, $x).':<br>';
				$registos = mysql_field_name($result_correio, $x)
				echo mysql_fetch_assoc($registos);
				//$campos = mysql_fetch_assoc($result_correio);

			}
	}
//header("location:mostra_dados.php");
ob_end_flush();
?>

alguém me pode ajudar?

Só 1 coisa:

O addslashes não é o mais apropriado para resolver o problema de sql injection. Usa o mysql_real_escape_string

Acrescentei um comentário para mostrar aonde

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.