Avatar billede Malika Nybegynder
25. september 2011 - 18:50 Der er 10 kommentarer og
1 løsning

Kan ikke gemme i databasen

Hvad er det jeg gøre forkert her...???
for når jeg går ind i phpmyAdmin, så kan jeg ikke se noget data....
Eller måske gøre jeg det forkert...:(

<?

$db_username = "Admin";
$db_password = "";
$db_server_url = "localhost";
// Database og table
$db_name = "Tester"; // Database navn
$db_table_Person = "person";

// Forbindelse til databasen, meld fejl hvis der ikke kan oprettes forbindelse.
$db = mysql_connect($db_server_url, $db_username, $db_password);
if (!$db){
  die('Could not connect: ' . mysql_error());
}
// Vælg database.
mysql_select_db($db_name, $db);

function addNewPerson($fornavn, $efternavn){
    global $db_table_Person;
   
mysql_query("INSERT INTO Person(firstName, lastName, )
VALUES ('$fornavn', '$efternavn')");

}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<form method="post" action="testConnecntion.php">
First name: <input type="text" name="firstname" /><br />
Last name: <input type="text" name="lastname" />

<input type="submit" value="Submit" />
</form>
</body>
</html>
Avatar billede Slettet bruger
25. september 2011 - 18:57 #1
Prøv at fjerne det sidste komma efter "lastName" i dit insert statement.
Avatar billede heinzdmx Nybegynder
25. september 2011 - 19:00 #2
For det første:

Husk nu mysql_real_escape_string !!! Den har vi nævnt et par gange nu.

For det andet, din insert ligger inde under en funktion, hvilket vil sige at den ikke bliver kørt med mindre du kalder den.


if (isset($_POST))
{
    if (isset($_POST['fornavn']) && isset($_POST['efternavn']))
    {
        addNewPerson(mysql_real_escape_string($_POST['fornavn']), mysql_real_escape_string($_POST['efternavn']));
    }
}


Burde gøre tricket
Avatar billede Malika Nybegynder
25. september 2011 - 19:11 #3
Vil det sige sådan ud så:

<?

$db_username = "root";
$db_password = "admin";
$db_server_url = "localhost";
// Database og table
$db_name = "Tester"; // Database navn
$db_table_Person = "person";

// Forbindelse til databasen, meld fejl hvis der ikke kan oprettes forbindelse.
$db = mysql_connect($db_server_url, $db_username, $db_password);
if (!$db){
  die('Could not connect: ' . mysql_error());
}
// Vælg database.
mysql_select_db($db_name, $db);

if (isset($_POST))
{
    if (isset($_POST['fornavn']) && isset($_POST['efternavn']))
    {
        addNewPerson(mysql_real_escape_string($_POST['fornavn']), mysql_real_escape_string($_POST['efternavn']));
    }
}


?>
Avatar billede heinzdmx Nybegynder
25. september 2011 - 19:42 #4
Tager lige det hele så du kan se hvordan det hænger sammen:


<?

$db_username = "Admin";
$db_password = "";
$db_server_url = "localhost";
// Database og table
$db_name = "Tester"; // Database navn
$db_table_Person = "person";

// Forbindelse til databasen, meld fejl hvis der ikke kan oprettes forbindelse.
$db = mysql_connect($db_server_url, $db_username, $db_password);
if (!$db){
  die('Could not connect: ' . mysql_error());
}
// Vælg database.
mysql_select_db($db_name, $db);

function addNewPerson($fornavn, $efternavn){
    global $db_table_Person;
   
mysql_query("INSERT INTO Person(firstName, lastName, )
VALUES ('$fornavn', '$efternavn')");

}

if (isset($_POST))
{
    if (isset($_POST['fornavn']) && isset($_POST['efternavn']))
    {
        addNewPerson(mysql_real_escape_string($_POST['fornavn']), mysql_real_escape_string($_POST['efternavn']));
    }
}
?>

<!-- Her indsætter du din HTML -->
Avatar billede NielsErikP Mester
25. september 2011 - 19:46 #5
Hej...
#3:
Du skal jo stadig have din INSERT STATMENT med..  :


  $NyPerson = mysql_query("INSERT INTO Person(firstName, lastName, )
VALUES ('$fornavn', '$efternavn')");

  mysql_real_escape_string($NyPerson);

Avatar billede heinzdmx Nybegynder
25. september 2011 - 19:53 #6
@Niels
Der er absolut ingen grund til at bruge mysql_real_escape_string på det som returnes fra en query.

Det er de data der sendes via en query det skal gøres ved.

I realiteten vil en mysql_real_escape_string på $NyPerson lave array'et om til en tekstreng - og gøre det lidt ubrugeligt..


Der er henholdvis $fornavn og $efternavn det bør gøre ved
Avatar billede Slettet bruger
25. september 2011 - 19:57 #7
#4: dit insert statement har stadig et komma for meget.

Og hvis jeg må give et par tip til bedre sikkerhed (når du har fået det andet til at virke):

Dit login til databasen bør du have i en separat php fil som ikke kan tilgås udefra (det afhænger nok af webhotellet om du kan placere filer uden for din web folder). Den kan du så inkludere på alle de sider hvor du skal have adgang til databasen. For det første skal du kun rette et sted hvis login oplysningerne ændrer sig eller du flytter til et andet webhotel, for det andet risikerer du ikke at alle kan se din php kode, og dermed brugernavn og password til databasen hvis php fortolkeren en kort periode ikke fungerer (det har jeg set før på nogle webhoteller). Det plejer at være ret nemt at finde ud af hvor man kan logge på med phpmyadmin.

Hvis du har mulighed for at bruge mysqli i stedet for mysql, så kan du lave prepared statements, og hvis bruger dem rigtigt slipper du for at huske at escape dine data, hvilket ellers kunne åbne op for "sql injections".
Avatar billede NielsErikP Mester
25. september 2011 - 20:05 #8
Hej..
@heinzdmx: Okie, så blev jeg selv lidt klogere.. Kunne tyde på jeg selv skal have ændret kode så :-) En vej der blev vist her på E.

#7:
Interresant eksempel med den sikkerheds tip . tak!!
Avatar billede Malika Nybegynder
25. september 2011 - 20:14 #9
#7
tak, retter i det....:)


#4

nå jeg kører den her kode, så går den bar videre til php siden...
gemmer ikke noget i databasen...:(
Avatar billede Malika Nybegynder
27. september 2011 - 10:48 #10
Smid et svar....:)
Avatar billede heinzdmx Nybegynder
27. september 2011 - 12:39 #11
Jeg lægger et svar her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester