Datensatz einfügen in mysql-Datenbank

Hi,
ich versuche in eine bereits bestehende Tabelle (bei strato.de) einen neuen Datensatz einzufügen. Leider funktioniert das nicht richtig.
Es sind bereits 3 Datensätze enthalten.
Die Anweisungen connect und select_db funktionieren.
Nur bei der Anweisung „Insert into“ und „query“ tritt ein Fehler auf.
Könnt Ihr mir bitte einen Tipp geben, wie ich das Skript zum Laufen kriege?
Danke, chrysi.


<?php $db_server = '---'; $db_benutzer = '---'; $db_passwort = '---'; $db_name = '---'; mysql_connect($db_server, $db_benutzer, $db_passwort); mysql_select_db($db_name); $sql = "INSERT INTO personen (vorname, alter) VALUES ('Mark', 27)"; mysql_query($con, $sql); mysql_close($con); ?>

Siehe Parameterliste:
http://php.net/manual/de/function.mysql-query.php

Und schadet sicher nicht wenn du dir mal den fetten roten Text durchliest.

Danke, ich habe überall das i ergänzt. Leider funktioniert es immer noch nicht. Ich hatte auch oben eine Anweisung vergessen. Daher steht unten noch einmal der ganze Code.
Als Fehlermeldung kommt nur „Es wurde kein Datensatz hinzugefügt.“ Also müsste meiner Auffassung nach beim „insert into“ oder beim „mysqli_query“ ein Fehler liegen.


<?php $db_server = '---'; $db_benutzer = '---'; $db_passwort = '---'; $db_name = '---'; if($con = mysqli_connect($db_server, $db_benutzer, $db_passwort)) { echo 'Server-Verbindung erfolgreich, wähle Datenbank aus...'; if(mysqli_select_db($con, $db_name)) { echo 'Datenbank erfolgreich ausgewält, alle Tests abgeschlossen.';} else { echo 'Die angegebene Datenbank konnte nicht ausgewählt werden, bitte die Eingabe prüfen!'; }} else { echo 'Verbindung nicht möglich, bitte Daten prüfen!'; echo 'MYSQL-Fehler: '.mysqli_error(); } $sql = "INSERT INTO personen(vorname, alter) VALUES ('Mark', 27)"; mysqli_query($con, $sql); $num = mysqli_affected_rows($con); if ($num>0) echo "Es wurde 1 Datensatz hinzugef?gt"; else echo "es wurde kein Datensatz hinzugef?gt"; mysqli_close($con); ?>

Leute, Leute, lest doch mal die Doku! Wenn man von MySQL auf MySQLi umsteigt, sollte man das doch wohl mal machen, oder?

Siehe http://php.net/manual/de/mysqli.error.php und http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

@ bdt600: Das hat geholfen. Die Eintragung funktioniert jetzt. Es gibt aber immer noch ein Problem: Es wird zweimal der gleiche Datensatz eingetragen.
Wie kriege ich es hin, dass nur ein Datensatz hinzugefügt wird?
MfG, chrysi.

<?php $name = "Hossu"; $bereich = "Janosch"; // Neues Datenbank-Objekt erzeugen $db = @new mysqli( 'rdbms.strato.de', '---', '---', '---' ); // Pruefen ob die Datenbankverbindung hergestellt werden konnte if (mysqli_connect_errno() == 0) {echo 'Datenbank erfolgreich verbunden.'; $sql = 'INSERT INTO `tabelleneu` (`name`, `bereich`) VALUES (?, ?)'; $eintrag = $db->prepare( $sql ); $eintrag->bind_param( 'ss', $name, $bereich ); $eintrag->execute(); // Pruefen ob der Eintrag erfolgreich war if ($eintrag->affected_rows == 1) echo 'Der neue Eintrage wurde hinzugefügt.'; else echo 'Der Eintrag konnte nicht hinzugefügt werden.'; } else echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: ' .mysqli_connect_errno(). ' : ' .mysqli_connect_error(). ''; $db->close(); ?>

Es funktioniert jetzt :slight_smile:
Ich habe den Code noch ein wenig abgeändert. Unten sind die funktionierenden HTML und die PHP Dateien

Name:

Bereich:

----------------------------------------------------------------------------------------------------------------------------- <?php $name = $_POST["t1"]; $bereich = $_POST["t2"]; $db = @new mysqli( 'rdbms.strato.de', '---', '---', '---' ); if (mysqli_connect_errno() == 0) {$sql = 'INSERT INTO `tabelleneu` (`name`, `bereich`) VALUES (?, ?)'; $eintrag = $db->prepare( $sql ); $eintrag->bind_param( 'ss', $name, $bereich ); $eintrag->execute(); echo 'Datenbank erfolgreich verbunden.'; if ($eintrag->affected_rows == 1) echo 'Der neue Eintrage wurde hinzugefügt.'; else echo 'Der Eintrag konnte nicht hinzugefügt werden.'; }else echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: ' .mysqli_connect_errno(). ' : ' .mysqli_connect_error(). ''; $db->close(); ?>