[PHP/MySQL] Datensätze hinzufügen

Sascha91

KlammID: 236083
ID: 236083
L
4 Mai 2006
148
2
guten Abend,

Wieso geht das nicht?

PHP:
INSERT INTO ticker_user(Name,E-Mail,IP,Datum) VALUES('$_POST["Name"]','$_POST["Mail"]','$_SERVER['REMOTE_ADDR']','NOW();');
 
Es soll mein erstes Script geben, dass mit einer Datenbank läuft. Wie kann ich denn einen Datensatz in die DB einfügen?
 
so wäre es richtig
PHP:
mysql_query("INSERT INTO ticker_user (Name,E-Mail,IP,Datum) VALUES ('".$_POST['Name']."','".$_POST['Mail']."','".$_SERVER['REMOTE_ADDR']."',".time().");");
Btw denk an SQL Injektion ;) und das ; im Query muss nicht zwingend sein.

*edit

wenn du nicht weis wie man mit php einen Query absendet dann schau dir erst das hier an

mysql_connenct
mysql_select_db
mysql_query

**edit 2
Man sollte sich Feldnamen in solch einer Schreibweise angewöhnen weil es im SQL sogenannte "Reservierte Worter" gibt.
PHP:
mysql_query("INSERT INTO `ticker_user` (`Name`,`E-Mail`,`IP`,`Datum`) VALUES ('".$_POST['Name']."','".$_POST['Mail']."','".$_SERVER['REMOTE_ADDR']."',".time().");");
 
Zuletzt bearbeitet:
Ok, hab nachgeschaut, was das heisst. Dann muss man irgendwo
PHP:
SELECT feld FROM db
hineinschreiben. Doch wenn ich jetzt in 4 Felder etwas schreiben will muss ich dann alle Feldernamen nach select rein schreiben?
 
Mit INSERT INTO fügst du Datensätze ein, das ist schon richtig.

Aber solang du dich nicht an die Regeln hältst, keine Fehlermeldungen und genaueren Infos gibst, kann, will und wird dir bei deinem konkreten Problem, warum obiges nicht funktioniert, wohl niemand helfen (können) ;)

Infos zu INSERT INTO:
https://dev.mysql.com/doc/refman/5.0/en/insert.html
 
Einmal lief es mit der Variante von strolch00, aber dann nicht mehr.

Folgenden Fehler
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 ''ticker_user' ('Name','E-Mail','IP','Datum') VALUES (Sascha Krähenbühl,mail@sasc' at line 1
 
Man sollte sich Feldnamen in solch einer Schreibweise angewöhnen weil es im SQL sogenannte "Reservierte Worter" gibt.
PHP:
mysql_query("INSERT INTO `ticker_user` (`Name`,`E-Mail`,`IP`,`Datum`) VALUES (".$_POST['Name'].",".$_POST['Mail'].",".$_SERVER['REMOTE_ADDR'].",".time().");");
Sorry, aber das ist Quatsch. Man sollte sich diese Schreibweise in keinster Weise angewöhnen. Man sollte wissen, welches die reservierten Wörter des jeweiligen SQL-Dialekts sind und wie man sie behandelt bzw diese ganz vermeiden.

Ich durfte vor kurzem solche MySQL-Queries nach Oracle portieren und wenn man dabei 95% der Zeit nur Backticks entfernt, beginnt man, die Scheissdinger zu hassen und phpMyAdmin zu verfluchen, wo sich scheinbar viele diesen "Stil" (oder auch unnötigen Overhead) abgucken... :roll:
 
Das geht nicht. :(

ganzer code:
PHP:
<?php
$host="localhost";
$user="klopp1991";
$pw="123456";
$db="db_klopp2000_4";

$verbindung = mysql_pconnect($host,$user,$pw);
mysql_select_db($db, $verbindung);

mysql_query("INSERT INTO `ticker_user` (`Name`,`E-Mail`,`IP`,`Datum`) VALUES (".$_POST['Name'].",".$_POST['Mail'].",".$_SERVER['REMOTE_ADDR'].",".time().");")  or die(mysql_error());
mysql_close();
?>
 
Sorry, aber das ist Quatsch. ....

Nagut aber,
1. mit Oracle habe ich keine Erfahrungen
2. Es geht ja hier um PHP und wenn der ERROR bei dem Tabellennamen anfängt bin ich davon ausgegangen das ist evtl. ein solches. wobei das recht abwegig ist. :oops: Zugegeben nachgeschaut habe ich nicht, mein Fehler. Und ich selber habe es mir auch nicht angewöhnt ich schreibe es nur bei JOIN Querys wegen den Table Alias als a.`foo` sonst mache ich es auch nicht.

*edit
auch mein Fehler hatte nur stumpfsinnig kopiert die Felder sind natürlich bis auf das letzte Strings

PHP:
<?php 
$host="localhost"; 
$user="klopp1991"; 
$pw="123456"; 
$db="db_klopp2000_4"; 

$verbindung = mysql_pconnect($host,$user,$pw); 
mysql_select_db($db, $verbindung); 

mysql_query("INSERT INTO `ticker_user` (`Name`,`E-Mail`,`IP`,`Datum`) VALUES ('".$_POST['Name']."','".$_POST['Mail']."','".$_SERVER['REMOTE_ADDR']."',".time().");")  or die(mysql_error()); 
mysql_close(); 
?>
 
Vorweg: Kein mysql_pconnect() verwenden, solange Du nicht weisst, was Du tust. Das öffnet eine persistente Verbindung, die am Ende des Skriptes nicht geschlossen wird und somit schnell den Flaschenhals zum DB-Server noch weiter verengen kann.

Zum eigentlichen Problem:

Strings (und zwar nur Strings - keine Zahlen!) müssen in SQL durch Ticks ( ' ) maskiert werden. Demzufolge:
Code:
[...]VALUES ('".$_POST['Name']."','". //....
Oder (wie ich finde) übersichtlicher:
Code:
[...]VALUES ('{$_POST['Name']}', '{ /...