Daten in DB schreiben

parafi

Mitglied
Moins.

Ich möchte gerne Daten in meine Datenbank schreiben.

Dies sieht bei mir folgendermassen aus:

PHP:
<?php
require "include/connectDB.inc.php";

if($_POST['speichern'] == "Speichern") {

		$verbindung = connectToDB ();
		
      $user = $_POST['user'];
      $passwort = $_POST['passwort'];
      $email = $_POST['email'];
      $sql = "SELECT *
                FROM user	
              WHERE name LIKE '$user'";
     $result = mysql_query($sql) OR die(mysql_error()); // bricht ab, wenns ein fehler gibt
     if ( mysql_num_rows($result) == 0 ) // wenn username nicht vorhanden ( 0 zeilen gefunden )
     {
          mysql_query('INSERT INTO user
              (user,passwort,email) VALUES ($user, $passwort, $email)');          
              
          
     } elseif (mysql_num_rows($result) >= 1) {
          echo "Bitte wählen Sie einen anderen Benutzernamen!";
      }
	else { 
      echo "Registrierung fehlgeschlagen!";
 	 }
 	 
    closeDB ($verbindung);
	//header ("Location: index.php");
}
?>

Kann mich einer helfen, weshalb meine Daten nicht in die DB geschrieben werden?
Es verläuft alles wie es sollte, nur dass meine Daten nicht in die DB geschrieben werden.

Gruss und vielen Dank im Voraus.

parafi
 
Hiho,

Strings vom Typ Varchar müssen in Anführungszeichen gesetzt werden:

PHP:
mysql_query("INSERT INTO user 
              (user,passwort,email) VALUES ('$user', '$passwort', '$email')");

Übrigens kann man Variablen nicht gleich in den String schreiben wenn du einfache ' benutzt (oben gleich mit korrigiert), sonst schreibt er dir "$user", "$passwort" und "$email" in die Datenbank.


Lg
 
Vielen Dank..!

Es schreibt mir die Daten jedoch immer noch nicht rein.
Die Verbindung zur DB sollte ja klappen.

Wenn ich $verbindung ausgebe, bekomme ich die Meldung Resource id #3.


Meine Verbindung zur DB sieht so aus:

PHP:
<?php
function connectToDB ()
{
	$dbname = "webshop";
	$passwort = "";
	$server = "localhost";
	$benutzername = "root";


	$verbindung = mysql_connect($server, $benutzername, $passwort) or die ("Keine Verbindung moeglich" . mysql_error());
	mysql_select_db($dbname, $verbindung) or die ("Die Datenbank existiert nicht");
	return $verbindung;
}
	
	
function closeDB ($verbindung)
{
	mysql_close($verbindung);
}
?>
 
Versuchs doch mal anstatt:
PHP:
mysql_query('INSERT INTO user
              (user,passwort,email) VALUES ($user, $passwort, $email)');

PHP:
$newsql = "INSERT INTO ".
    "user (user, password, email) ".
  "VALUES"." '$user', '$password', '$email'"; 

mysql_query ($newsql);

Das ist auch so ein Gratis Tipp :) Füll eine Mysql Anweisung immer in Variabeln ein und Notier dir mittels //MESSAGE für was die Anweisung da ist!
Ist viel übersichtlicher ;)
 
hmm..ich habs mal so probiert und es klappt auch nicht.

Ich glaube das ich nicht richtig mit meiner DB verbunden bin.
Jedoch sollte mein Code doch so korrekt sein...?
 
Vielleicht kommt er irgendwie durcheinander, weil bei dir eine Spalte und die Tabelle gleich heißen (ob das so ist weiß ich nicht :D).

Kannst ja mal probieren die user-Spalte umzubenennen in Name oder so :)

EDIT: Ich sehe grade, beim SELECT schaust du nach der Spalte Name, beim Eintragen trägst du in die Spalte user ein, liegt da vielleicht der Fehler?

Lg
 
Aalso :) erstelle bitte mal eine neue Tabelle mit dem Namen benutzerdaten in der Datenbank Webshopdb. Wenn du das gemacht hast fügst du 3 Spalten ein:

id int - Primary_key - AUTO_INCREMENT
Nickname varchar(20)
Kennwort varchar(20)
Email varchar(20)

PHP:
<?php 
// Definition der Benutzer 
$benutzer[0]["Nickname"] = $_POST["username_eingabe"]; 
$benutzer[0]["Kennwort"] = $_POST["passwort_eingabe"];
$benutzer[0]["Email"] = $_POST["email_eingabe"];

// Aufbau der Datenbankverbindung 
$connectionid  = mysql_connect ("localhost", "root", "PASSWORT"); 
if (!mysql_select_db ("webshopdb", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

// Daten eintragen 
while (list ($key, $value) = each ($benutzer)) 
{ 
  // SQL-Anweisung erstellen 
  $sql = "INSERT INTO ".
    "benutzerdaten (Nickname, Kennwort, Email) ".
  "VALUES ('".$value["Nickname"]."', '".
                       md5 ($value["Kennwort"])."', '".
                       $value["Email"]."')"; 
  mysql_query ($sql); 

  if (mysql_affected_rows ($connectionid) > 0) 
  { 
    echo "Benutzer erfolgreich angelegt.<br>\n"; 
  } else if (mysql_num_rows($connectionid) >= 1) {
          echo "Bitte wählen Sie einen anderen Benutzernamen!";
      } 
  else 
  { 
   echo "Fehler beim Anlegen der Benutzer.<br>\n"; 
  } 
} 
?>

Vielleicht klappts ja so?
 
Zurück