PHP / MYSQL Insert REAGIERT NICHT

05/05/2014 09:21 .Like#1
Hallo leute,
wollte mittels eines PHP-Scripts Daten in meine Tabelle einfügen.
Es kommt auch keine Fehlermeldung wenn ich bsp. OR DIE ("Fail"); hinzufüge, allerdings
werden die Einträge einfach nicht in die Tabelle übertragen.

Erkennt ihr einen Fehler?
PHP Code:
    <html>
    <head>
    <title> Test </title>
    </head>
    <body>
    <?php
      
//Verbindung zur Datenbank herstellen
      
mysql_connect("127.0.0.1 oder localhost""root","pw") or die ("Verbindung nicht möglich");
      
mysql_select_db("test1") or die ("Datenbank existiert nicht");
      
$result "INSERT INTO tabelle1 (ID, alter) VALUES ('98' , ' 20 ')";
      
$eintragen mysql_query($result) ;
    
?>
    </body>
    </html>
05/05/2014 09:39 Syc#2
Funktioniert das SQL Statement denn im phpmyadmin?
05/05/2014 10:12 Kentika#3
ALTER ist ein MySQL-Schlüsselwort - solltest vielleicht "`" davor & danach setzen.

LG
Kentika

P.S. Schau Dir mal Prepared Statements mit MySQLI oder PDO an.
05/05/2014 10:55 Mostey#4
Code:
"127.0.0.1 oder localhost"
Ähm?

Code:
(ID, alter) VALUES ('98' , ' 20 ')
Sind das Integer? Falls ja, müssen die ' Zeichen weg.

Code:
$eintragen = mysql_query($result) ;
So einfach ist das nicht, schau dir bitte mal Tutorials / die Dokumentation an.

Ansonsten noch als Randnotiz: mysql_* ist seit PHP 5.5 deprecated (veraltet), daher sollte mysqli genutzt werden.

Quote:
Originally Posted by Kentika View Post
ALTER ist ein MySQL-Schlüsselwort - solltest vielleicht "`" davor & danach setzen.
Nein.

Quote:
Originally Posted by Kentika View Post
P.S. Schau Dir mal Prepared Statements mit MySQLI oder PDO an.
Ich bezweifle stark das er schon mit Prepared Statements umgehen kann, wenn er noch nicht die Verbindung zu seiner Datenbank herstellen kann.
05/05/2014 11:00 Kentika#5
Quote:
Originally Posted by Mostey View Post
Code:
"127.0.0.1 oder localhost"
Ähm?
Er meint damit er hat beides schon versucht. (Denke ich jetzt mal, habe ich jedenfalls so interpretiert)

Quote:
Nein.
Doch. [Only registered and activated users can see links. Click Here To Register...]

Quote:
Code:
(ID, alter) VALUES ('98' , ' 20 ')
Sind das Integer? Falls ja, müssen die ' Zeichen weg.
Müssen nicht zwingend, sieht nur schöner aus.

Quote:
Ich bezweifle stark das er schon mit Prepared Statements umgehen kann, wenn er noch nicht die Verbindung zu seiner Datenbank herstellen kann.
Prepared Statements sind teilweise einfacher, als die ganzen mysql_* Funktionen.

Wie oben bereits erwähnt, denke ich Du oder ich haben es falsch interpretiert.

@TE: Bei Gelegenheit: [Only registered and activated users can see links. Click Here To Register...]
05/05/2014 11:04 Mostey#6
Quote:
Originally Posted by Kentika View Post
Er meint damit er hat beides schon versucht. (Denke ich jetzt mal, habe ich jedenfalls so interpretiert)
Man weiß ja nie...


Quote:
Originally Posted by Kentika View Post
Doch. [Only registered and activated users can see links. Click Here To Register...]
mysql> ALTER TABLE testalter_tbl DROP i;

Wo sind die versprochenen Zeichen?


Quote:
Originally Posted by Kentika View Post
Prepared Statements sind teilweise einfacher, als die ganzen mysql_* Funktionen.
Auf keinen Fall. Vorallem weil man in PHP dummerweise auch keine richtige fetch Methode zur Verfügung gestellt bekommt, wenn es um Prepared Statements geht. Da darfst du Variablen binden und das wars. Also auch sehr limitiert.

Zudem sollte man, wenn man sich damit befasst, erstmal die Vorteile davon in Erfahrung bringen. Prepared Statements sollten nicht für One-Way Querys genutzt werden sondern eignen sich speziell für den mehrmaligen Gebrauch mit (unter anderem) verschiedenen Parametern.

Prinzipiell reicht sonst auch die normale Query die man eben vorher mal escaped.
05/05/2014 11:07 Kentika#7
Quote:
Originally Posted by Mostey View Post
Man weiß ja nie...




mysql> ALTER TABLE testalter_tbl DROP i;

Wo sind die versprochenen Zeichen?
Ich hab das ganze versucht, ohne die Zeichen vor und nach dem Alter funktioniert die Query nicht. Die Spalte heißt nämlich alter & MySQL interpretiert es in dem Sinne, als sei der Command gemeint.

Quote:
Auf keinen Fall. Vorallem weil man in PHP dummerweise auch keine richtige fetch Methode zur Verfügung gestellt bekommt, wenn es um Prepared Statements geht. Da darfst du Variablen binden und das wars. Also auch sehr limitiert.

Zudem sollte man, wenn man sich damit befasst, erstmal die Vorteile davon in Erfahrung bringen. Prepared Statements sollten nicht für One-Way Querys genutzt werden sondern eignen sich speziell für den mehrmaligen Gebrauch mit (unter anderem) verschiedenen Parametern.

Prinzipiell reicht sonst auch die normale Query die man eben vorher mal escaped.
Nagut, es ist unterschiedlich.
05/05/2014 11:10 Mostey#8
Quote:
Originally Posted by Kentika View Post
Ich hab das ganze versucht, ohne die Zeichen vor und nach dem Alter funktioniert die Query nicht. Die Spalte heißt nämlich alter & MySQL interpretiert es in dem Sinne, als sei der Command gemeint.
Würde ich so nicht unterschreiben. Der Server weiß sicherlich, wo das ALTER ungefähr stehen muss, damit die Query gültig wird. Könnte trotzdessen allerdings sein, muss man eben mal testen.

Das du direkt auf den Spaltennamen aus warst, war mir erst nicht klar. Da hab' ich nicht wirklich drauf geachtet.
05/05/2014 11:13 Kentika#9
Quote:
Originally Posted by Mostey View Post
Würde ich so nicht unterschreiben. Der Server weiß sicherlich, wo das ALTER ungefähr stehen muss, damit die Query gültig wird. Könnte trotzdessen allerdings sein, muss man eben mal testen.

Das du direkt auf den Spaltennamen aus warst, war mir erst nicht klar. Da hab' ich nicht wirklich drauf geachtet.
[Only registered and activated users can see links. Click Here To Register...]
Wie schauts jetzt aus? :)
05/05/2014 21:50 Mikesch01#10
Quote:
Originally Posted by Mostey View Post
Würde ich so nicht unterschreiben. Der Server weiß sicherlich, wo das ALTER ungefähr stehen muss, damit die Query gültig wird. Könnte trotzdessen allerdings sein, muss man eben mal testen.

Das du direkt auf den Spaltennamen aus warst, war mir erst nicht klar. Da hab' ich nicht wirklich drauf geachtet.
Doch, ist leider so^^ wenn man nur das Schlüsselwort "alter" oder "Alter" oder in jeglicher schreibweise verwendet, dann sieht MySQL dies als Befehl an. Wenn man hier die Spalte ansprechen möchte, benötigt man die Backticks.