Jump to content

erro na leitura da base de dados


Deus
 Share

Recommended Posts

Boa noite...

Eu estou a contruir um site em php capaz de guardar um registo de user e mail numa base dados mas quando tento ler o que tem na base de dados de modo a tentar verificar se esta correcto dá-me o seguinte erro.

http://img526.imageshack.us/img526/4649/img1nd.jpg

Uploaded with ImageShack.us

O meu codigo de leitra é o seguinte:

<?php
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT * FROM Persons");

echo "<table border='1'><tr><th>Firstname</th><th>Lastname</th></tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['Email'] . "</td>";
  echo "<td>" . $row['Name'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);
?>

Linguagens: C / Java / Prolog / Assembly / HTMLA aprender: Java

Link to comment
Share on other sites

altera isto para ver qual o problema

$result = mysql_query("SELECT * FROM Persons");

if (($result = mysql_query("SELECT * FROM Persons")) == false) {
die('Could not execute SQL : ' . mysql_error());
}

tenho um "felling" que não tens a tabela "Persons" na base de dados, ou pior ainda, não tens a base de dados "my_db".

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

tenho um "felling" que não tens a tabela "Persons" na base de dados, ou pior ainda, não tens a base de dados "my_db".

http://img706.imageshack.us/img706/9022/img2cn.jpg

Uploaded with ImageShack.us

Tens razão, mas estou a criar a base de dados  ?

<?php
	$con = mysql_connect("127.0.0.1","root","");
	if (!$con)
	{
	die('Could not connect: ' . mysql_error());
	}

	if (mysql_query("CREATE DATABASE my_db",$con))
	{
	echo "Database created";
	}
	/*else
	{
	echo "Error creating database: " . mysql_error();
	}*/
	// criar uma table
	mysql_select_db("my_db", $con);	
	$sql = "CREATE TABLE Persons(Email varchar(30),Name varchar(30),)";
	// Execute query
	mysql_query("INSERT INTO Persons (Email, Name) VALUES ( '$_POST[mail]', '$_POST[fname]')");
	echo "1 email added";

	mysql_close($con);
	?>

Linguagens: C / Java / Prolog / Assembly / HTMLA aprender: Java

Link to comment
Share on other sites

Estás a definir a instrução, mas não a estás a executar.

Desculpa mas não estou a ver onde está o erro  ?

Será que me podias ajudar a corrigir isso?

Linguagens: C / Java / Prolog / Assembly / HTMLA aprender: Java

Link to comment
Share on other sites

Desculpa mas não estou a ver onde está o erro  ?

Será que me podias ajudar a corrigir isso?

$con = mysql_connect("127.0.0.1","root","");
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

if (mysql_query("CREATE DATABASE my_db",$con))
{
    echo "Database created";
}

// criar uma table
mysql_select_db("my_db", $con); 
                
$sql = "CREATE TABLE Persons(Email varchar(30),Name varchar(30),)";

// Execute query
mysql_query("INSERT INTO Persons (Email, Name) VALUES ( '$_POST[mail]', '$_POST[fname]')");
echo "1 email added";
                
mysql_close($con);

A instrução definida na linha assinalada não é executada em lado nenhum. Lógico que a tabela não existe.

Só para clarificar, isto é só para aprender, certo? Esse código não pode ir, nunca, para um site real.

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Link to comment
Share on other sites

A instrução definida na linha assinalada não é executada em lado nenhum. Lógico que a tabela não existe.

Só para clarificar, isto é só para aprender, certo? Esse código não pode ir, nunca, para um site real.

Já funciona na perfeição, obrigado pela ajuda e pela sinceridade.

Sim, eu estou apenas a aprender mas podes dizer-me porque é que nunca poderia ir para um site real? Gosto de saber os meus erros para aprender com eles...

Linguagens: C / Java / Prolog / Assembly / HTMLA aprender: Java

Link to comment
Share on other sites

Sim, eu estou apenas a aprender mas podes dizer-me porque é que nunca poderia ir para um site real? Gosto de saber os meus erros para aprender com eles...

Por vários motivos, mas especialmente pela insegurança das queries; aqui:

mysql_query("INSERT INTO Persons (Email, Name) VALUES ( '$_POST[mail]', '$_POST[fname]')");

Se alguém enviar a variável mail no POST com a informação ',''); DROP TABLE Persons;#, perdes a tabela inteira. A esta técnica chama-se SQL injection e é todo um tema. Não existe cura definitiva para este mal, e a tua melhor hipótese é usar prepared statements (o que também é todo um tema).

De qualquer forma, se estás a começar a aprender, não te preocupes com isto para já. Só não metas é nada "ao vivo", senão és papado que é um instante.

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Link to comment
Share on other sites

Por vários motivos, mas especialmente pela insegurança das queries; aqui:

mysql_query("INSERT INTO Persons (Email, Name) VALUES ( '$_POST[mail]', '$_POST[fname]')");

Se alguém enviar a variável mail no POST com a informação ',''); DROP TABLE Persons;#, perdes a tabela inteira. A esta técnica chama-se SQL injection e é todo um tema. Não existe cura definitiva para este mal, e a tua melhor hipótese é usar prepared statements (o que também é todo um tema).

De qualquer forma, se estás a começar a aprender, não te preocupes com isto para já. Só não metas é nada "ao vivo", senão és papado que é um instante.

Já ouvi falar desse tipo de ataques mas nunca percebi como funcionam...

Eu apenas estou a aprender de formar muito amadora e isto esta a correr num servidor virtual na minha maquina...

Se um dia me tornar mais profissional terei em conta esse problema  🙂

Linguagens: C / Java / Prolog / Assembly / HTMLA aprender: Java

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.