MYSQL frage
Guten Tag miteinander,
seit einigen Wochen habe ich mit einem PHP & MYSQL Buch angefangen. Vor ein paar tagen habe ich jetzt mit dem Mysql teil angefangen wobei ich jetzt ein kleines problem habe.
Nun mein problem ist folgendes:
Wen ich auf meiner erstellten Website in 4 Feldern eines Formulars ( idee, name, mail, nachricht) Daten eingebe sodass diese per diesem php script in meine mysql Datenbank geschrieben werden kriege ich den Wert "geht nicht" zurück was ja heissen soll das es irgendeinen fehler bei der ausführung von mysqli_query($db, $sql) gab.
Bin noch ein kompletter Anfänger auf diesem Bereich und wäre froh wen mir jemand kurz helfen könnte, sitze seit gestern morgen an diesem problem
Freundliche Grüsse
Beni90
seit einigen Wochen habe ich mit einem PHP & MYSQL Buch angefangen. Vor ein paar tagen habe ich jetzt mit dem Mysql teil angefangen wobei ich jetzt ein kleines problem habe.
Nun mein problem ist folgendes:
<?php
$idee = $_POST['id'];
$name = $_POST['name'];
$mail = $_POST['mail'];
$nachricht = $_POST['nachricht'];
$db = mysqli_connect('localhost','root','','arben')
or die('GEHT NICHT');
$sql = "INSERT INTO gbook ('id', 'name', 'mail', 'nachricht') VALUES ('$idee', '$name', '$mail', '$nachricht')";
$ergebnis = mysqli_query($db, $sql)
or die('geht nicht');
mysql_close($db);
echo 'hallo';
?>
Bin noch ein kompletter Anfänger auf diesem Bereich und wäre froh wen mir jemand kurz helfen könnte, sitze seit gestern morgen an diesem problem
Freundliche Grüsse
Beni90
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 180000
Url: https://administrator.de/forum/mysql-frage-180000.html
Ausgedruckt am: 13.04.2025 um 20:04 Uhr
11 Kommentare
Neuester Kommentar
Moin,
Schalte doch mal das Error Reporting an, dann bekommst du den eigentlichen Fehler auch angezeigt.
OT: Gewöhn dir sowas gar nicht erst an! Stichwort SQL Injection usw. benutzte mindestens mysql_real_escape()
Und weil Freitag ist, hier noch ein Link zu meinem Lieblings-Comic zu dem Thema : http://xkcd.com/327/
lg,
Slainte
Schalte doch mal das Error Reporting an, dann bekommst du den eigentlichen Fehler auch angezeigt.
error_reporting(E_ALL)
OT: Gewöhn dir sowas gar nicht erst an! Stichwort SQL Injection usw. benutzte mindestens mysql_real_escape()
$name = $_POST['name'];
[...]
$sql = "INSERT INTO gbook ('id', 'name', 'mail', 'nachricht') VALUES (.... '$name', .... )";
Und weil Freitag ist, hier noch ein Link zu meinem Lieblings-Comic zu dem Thema : http://xkcd.com/327/
lg,
Slainte
Zitat von @beni90:
Wie meinst du das mit der sql injection
? bin vollkommen der Noob hab hier nen Buch auf dem ich jetzt grad mal 50 Seiten durch
hab XD
Wie meinst du das mit der sql injection
hab XD
$sql = "INSERT INTO gbook ('id', 'name', 'mail', 'nachricht') VALUES ('$idee', '$name', '$mail', '$nachricht')";
$idee="1','','',''); DROP TABLE gbook; --";
siehe auch http://en.wikipedia.org/wiki/SQL_injection
benutze lieber PDO
<?php
$dsn = 'mysql:dbname=arben;host=127.0.0.1';
$user = 'root';
$password = '';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
try {
$sth = $dbh->prepare( 'INSERT INTO gbook (`id`, `name`, `mail`, `nachricht`) VALUES (?, ?, ?, ?)' );
$sth->execute( array(
$_POST['id'],
$_POST['name'],
$_POST['mail'],
$_POST['nachricht'],
) );
} catch (PDOException $e) {
echo 'Fehler: ' . $e->getMessage();
}
unset($dbh); // nicht nötig
Warum ?
Kurz:- die Gefahr von Injections wird reduziert
- man kann es für unterschiedlichste DB benutzen
- durch die "Objekt Eigenschaft" ist es für den Programmierer viel einfacher anzuwenden
Man ist einfach viel schneller damit beim Programmieren, insbesondere wenn man kein Framework einsetzt. (btw. PDO wird wohl inzwischen auch von jedem Framework benutzt)
lass dir doch bitte die generierte SQL Anweisung ausgeben - und führe diese in deinem phpMyAdmin aus (bzw. poste die hier)
Bekommst du nicht mal eine Fehlermeldung wenn Du den von mir geschriebenen Code benutzt ?
Wie rufst Du das Script denn auf ?
Hast Du überhaupt ein Zugriff mit root auf die Datenbank ? (blöde Frage - aber man kann nie wissen)
Stimmen deine Angaben zu Datenbanknamen, Tabellennamen, Datenfeldnamen und Datentypen überhaupt ?
EDIT:
sendet dein Formular Überhaupt Daten (per POST) ?
Bekommst du nicht mal eine Fehlermeldung wenn Du den von mir geschriebenen Code benutzt ?
Wie rufst Du das Script denn auf ?
Hast Du überhaupt ein Zugriff mit root auf die Datenbank ? (blöde Frage - aber man kann nie wissen)
Stimmen deine Angaben zu Datenbanknamen, Tabellennamen, Datenfeldnamen und Datentypen überhaupt ?
EDIT:
sendet dein Formular Überhaupt Daten (per POST) ?
var_dump($_POST);
http://php.net/manual/en/book.pdo.php - php.net sollte man kennen
http://dev.mysql.com/doc/refman/5.1/de/ - das auch
ansonsten liefert dir Google massenhaft Beispiele
http://dev.mysql.com/doc/refman/5.1/de/ - das auch
ansonsten liefert dir Google massenhaft Beispiele