Kann keinen Eintrag der Datenbank hinzufügen... No Database selected?!

dartox

Erfahrenes Mitglied
Hallo Leute,

und zwar verzweifel ich grad den ganzen Tag an einer simplen php Datei die einfach nicht auf meine Datenbank schreiben will.

Das HTML File sieht so aus:

Code:
<html>
<form action="insert.php" method="post">
        <input name="vorname" TYPE="text" />
        <input name="nachname" TYPE="text" />
        <input name="password" TYPE="text" />
        <input name="email" TYPE="text" />
        <input type="submit" name="submit" value="registrieren" />
</form>
</html>

und das PHP-File so:

Code:
<?php
$db = @new mysqli('localhost', 'root', 'password', 'login');
if (mysqli_connect_errno()) {
    die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}

$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"];
$password = $_POST["password"];
$email = $_POST["email"];

$eintrag = mysql_query("INSERT INTO user (Vorname, Nachname, Passwort, Email) VALUES ('".$vorname."', '".$nachname."', '".$password."', '".$email."')") or die(mysql_error());

echo mysql_errno() . ": " . mysql_error(). "\n";
?>

Ich hab mit PHPMyAdmin ne Datenbank erstellt (login) und darin ne Tabelle (user).

Wenn ich aus der user-Tabelle einen Eintrag lesen möchte funktioniert dies einwandfrei, doch wenn ich mit oben genannten Code etwas hinein schreiben möchte kommt immer als Fehlermeldung "No Database selected", doch ich hab sie ja oben beim einloggen selected?!

Versteh das nicht.

Vielen Dank.
Gruß, dartox.
 
Du musst dich für MySQLi oder MySQL entscheiden.

Du verwendest oben den den objektorientierten Zugriff auf MySQLi, dann die prozeduralen Funktionen und dann sogar die MySQL Funktion.

Hier mal angepasst für dich:

PHP:
<?php
$db = mysqli_connect('localhost', 'root', 'password', 'login');
if (mysqli_connect_errno()) {
    die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}
 
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"];
$password = $_POST["password"];
$email = $_POST["email"];
 
$eintrag = mysqli_query($db, "INSERT INTO user (Vorname, Nachname, Passwort, Email) VALUES ('".$vorname."', '".$nachname."', '".$password."', '".$email."')") or die(mysqli_error($db));
 
echo mysqli_errno($db) . ": " . mysqli_error($db). "\n";
?>
 
Wow, vielen Dank, funktioniert einwandfrei. Den halben Tag verkackt nur wegen nem kleinen "i". :)

Wie man schon merkt hab ich jetzt nicht so viel Ahnung von MySQL, arbeite mich da gerade ein. Wo ist der genaue Unterschied zwischen MySQLi und MySQL? Und was davon ist gescheiter einzusetzen?
 
mysqli (i steht für improved also erweitert/verbessert) hat es sich zur Aufgabe gemacht, die vermissten Features der MySQL-API in PHP zu ergänzen. Unter anderem ein vollwertiges Klassen-Konzept und Prepared Statements.

Echte Männer verwenden jedoch PDO ;-)
 
Wow, vielen Dank, funktioniert einwandfrei. Den halben Tag verkackt nur wegen nem kleinen "i". :)

Wie man schon merkt hab ich jetzt nicht so viel Ahnung von MySQL, arbeite mich da gerade ein. Wo ist der genaue Unterschied zwischen MySQLi und MySQL? Und was davon ist gescheiter einzusetzen?

Da würd ich dir zu MySQLi oder PDO raten und für normal INSERT's gleich Prepared Statements zu verwenden, dann brauchst du dir keine Sorgen über das richtige escaping machen, da das der Treiber übernimmt.
Deine Anwendung ist bereits sehr unsicher, weil du die Benutzereingabe ohne jegliche Überprüfung bzw. ohne sie zu escapen einfach in die DB schreibst.
 
Zurück