PDA

Volledige versie bekijken : informatie toevoegen aan mysql database


jeverink
%Europe/Berlin %560 %2011, 13:26
halo iedereen,

Ik probeer een registratie systeem te maken met flash,php en mySQL.
Ik heb een php code gemaakt die de informatie niet toevoegd.

<?php
$fouttekstcon = "geen verbinding";
$fouttekstacc = "account bestaat niet en wordt aangemaakt";
$name = $_POST["user"];
$pass = $_POST["pass"];


$con = mysql_connect("localhost","gebruikersnaam", "wachtwoord");
if (!$con)
{
echo "&vari=" .$fouttekstcon;
}

mysql_select_db("lucife01_jasper", $con);

$checkuser = mysql_query("SELECT * FROM id WHERE username ='$name'");

$username_exist = mysql_num_rows($checkuser);

if($username_exist >= 1){
echo "&vari=" .$name;
}else{
echo "&vari=" .$fouttekstacc;
mysql_query("INSERT INTO id (username, password)
VALUES (.$name., .$pass.)");

}
mysql_close($con);

?>

De fout zit in de mysql_query aan het eind.
de table heet id
en de waardes username en password moeten toevoegen.
De table is al aangemaakt.
Als ik even later kijk in de database staat de ingevoerde informatie er niet in.
Wat klopt er niet aan.
(Er is niks fout aan het flash bestand,want dat heb ik al getest.)

Jan
%Europe/Berlin %579 %2011, 13:54
Er zijn php tags ipv quote om rond je script te zetten. ;)

In plaats van vanuit Flash of een swf te testen, is het voor zulke scripts makkelijker als je die rechtstreeks in je browser test want dan zie je onmiddellijk (als je error reporting aanzet) wat de foutmelding van php of mysql is. Meestal inclusief wat uitleg over wat er mis is.

Dus verander die $_POST tijdelijk even in $_GET of $_REQUEST en bezoek dan de url rechtstreeks in je browser:
http://localhost/script.php?user=jan&pass=somethingelse

Volgens mij moeten er quotes rond je values en ook die punt hoort daar niet echt thuis.
mysql_query("INSERT INTO id (username, password) VALUES (.$name., .$pass.)");

Dus:
mysql_query("INSERT INTO id (username, password) VALUES ('".$name."', '".$pass."')");
of
mysql_query("INSERT INTO id (username, password) VALUES ('$name', '$pass')");

Kijk ivm strings ook even naar:
http://php.net/manual/en/function.mysql-real-escape-string.php
mysql_real_escape_string — Escapes special characters in a string for use in an SQL statement
This function must always (with few exceptions) be used to make data safe before sending a query to MySQL.

Jan

Tom.
%Europe/Berlin %579 %2011, 13:54
Lees dit eens: http://www.sitemasters.be/?pagina=overzicht/overzicht&cat=20&id=51

Als je een mysql error hebt weet je waar je het moet zoeken.

Ik vermoed trouwens dat het te maken heeft met de puntjes in je values.

Oh, het is nooit verstand mysql wachtwoorden rond te strooien.

jeverink
%Europe/Berlin %732 %2011, 17:35
ik heb de sql error gebruikt en krijg daarvan dit antwoord:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'test\', \'test\')' at line 1

Tom.
%Europe/Berlin %788 %2011, 18:55
Lees de 1e post nog eens. Ik zie dat die na mijn reactie nog uitgebreid is en op hetzelfde uitkomt als mijn oplossing (maar dan uitgebreider).

Jan
%Europe/Berlin %870 %2011, 20:53
ik heb de sql error gebruikt en krijg daarvan dit antwoord:
In php hoef je blijkbaar binnen double quotes geen single quotes te escapen met een backslash.
Dus : mysql_query("INSERT INTO id (username, password) VALUES ('$name', '$pass')");


Jan

jeverink
%Europe/Berlin %701 %2011, 16:49
Heel erg bedankt adnez en tom. .
Het is gelukt.