Von-Bis-Werte in einer Datenbank?

Vielen Dank für deine ausführliche Antwort.:)

Stimmt, mit dem "mysql_fetch_array" war i.was, ich werde mal googeln, wie das funktioniert.:D

Zum Teil mit GET/POST:
Hast du schon mal was von mysql_real_escape_string gehört?

Irgendwas, was von "außen" kommt (Benutzereingaben in Formularen...)
sollte man nicht direkt in SQL-Abfragen verwenden,
weil man mit passenden Eingaben alles manipulieren kann.

Beispiel:
SELECT nachname FROM mitarbeiter WHERE vorname = "$name"
$name ist in PHP etwas, dass ursprünglich vom Webseitenbenutzer eingegeben wurde

Eingabe Hans
SELECT nachname FROM mitarbeiter WHERE vorname = "Hans"
Alles in Ordnung.

Eingabe Peter
SELECT nachname FROM mitarbeiter WHERE vorname = "Peter"
Auch alles in Ordnung.


Eingabe Hans" OR vorname = "Peter
SELECT nachname FROM mitarbeiter WHERE vorname = "Hans" OR vorname = "Peter"
Damit hätt ich eine andere Abfrage.
Je nachdem, was PHP mit dem Ergebnis macht, passiert eventuell noch mehr ungewolltes.

Und mit bla"; DROP TABLE mitarbeiter; SELECT "haha
ergibt
Code :
1
2
SELECT nachname FROM mitarbeiter WHERE vorname = "bla";
DROP TABLE mitarbeiter; SELECT "haha"
lösch ich dir die ganze Mitarbeitertabelle.
(es sind drei einzelne Anweisungen geworden.
Zuerst die normale Abfrage, dann das löschen, dann noch ein Select
um die Anführungszeichen ordentlich zu haben.)

Das finde ich gerade unglaublich lustig und absolut genial, darauf wäre ich niemals gekommen, das sowas überhaupt möglich ist. Einfach der Wahnsinn, würde ich eine "echte" Webseite erstellen, sollte ich das schleunigst ändern.:D

Und zu MySQLi und deprecated:
Die Art, wie du auf die Datenbank zugreifst, sollte man schon lange nicht mehr verwenden.
Nur eine Frage der Zeit, bis es so nicht mehr funktioniert.
Leider gibts viele (alte) Einsteigertutorials, die das noch so zeigen,
und bei Google ziemlich oben stehen oder so und deswegen oft gelesen werden.

Wusste, dass das kommt, aber ich werde es nicht ändern, da es von unserem Info-utor so gezeigt wurde und ich die Zeit nicht habe, zu gucken, wie es richtig geht. Danke jedoch für den Hinweis.:)
 
Merk grad, dass ich dir zwar einige SQL-Injection-Beispiele gegeben hab,
aber nicht genau gesagt, wie das zu verhindern ist :D

Ist hier sehr einfach:
Die Variablen, die im SQL verwendet werden sollen,
zuerst durch die Funktion mysql_real_escape_string durchlassen.

Für mein Beispiel
PHP:
$sql = "SELECT nachname FROM mitarbeiter WHERE vorname = \"$name\" ";
(nicht durch die \" verwirren lassen, dass bedeutet nur, dass ein " Teil vom SQL ist.
Statt Anfang/ende der ganzen Anweisung).

Geschützt:
PHP:
$name2 = mysql_real_escape_string($name);
$sql = "SELECT nachname FROM mitarbeiter WHERE vorname = \"$name2\" ";
oder direkt als Teil der Anweisung, aber mit mehr Anführungszeichenchaos:
PHP:
$sql = "SELECT nachname FROM mitarbeiter
WHERE vorname = \"" . mysql_real_escape_string($name) . "\"";
Sowas kannst du auch ohne Nebenwirkungen oder Mehraufwand bei Schulaufgaben einbauen
 
Okay, dann werde ich das machen, sieht ja einfach aus,kommt bestimmt gut an, vielen Dank. Uni-Aufgabe bitte.:D

So, ich bin endgültig zu dumm, was aus der Datenbank auszulesen, das ist jetzt meine Funktion:
Es soll die Produktnummer für die bestimmte Legierung ausgelesen werden:
PHP:
$verbindennn = mysql_connect("localhost", "**", "**")
or die ("Fehler im System");

mysql_select_db("f_finder")
or die ("Verbidung zur Datenbank war nicht möglich...");
			$control = 0;		
			$nummer1 = "SELECT produktnr FROM metall WHERE legierung='abc'";
			while($row = mysql_fetch_object($nummer1))
				{
					$nummer=$row->produktnr;
				}	
mysql_free_result($nummer1);
var_dump($nummer);


var_dump:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /stud/f/***/public_html/projekt/userwerkzeug.php on line 236 Warning: mysql_free_result() expects parameter 1 to be resource, string given in /stud/f/***/public_html/projekt/userwerkzeug.php on line 240 Notice: Undefined variable: nummer in /stud/f/***/public_html/projekt/userwerkzeug.php on line 241 NULL Notice: Undefined variable: nummer in /stud/f/***/public_html/projekt/userwerkzeug.php on line 255 resource(7) of type (mysql result)

Kannst du mir vllt. einmal die Ausgabe richtig schreiben, damit ich das habe und dann kann ich das auf alles weitere anwenden. Komme mir gerade vor, wie der erste Mensch ey.:D

Liebe Grüße und Danke schonmal.:)
 
Statt
PHP:
$nummer1 = "SELECT produktnr FROM metall WHERE legierung='abc'";
vllt. sowas ;-]
PHP:
$nummer1 = mysql_query("SELECT produktnr FROM metall WHERE legierung='abc'");
 
Hey danke dir, warn Schönheitsfehler.:D Das hat schonmal ein paar Fehler aus var_dump entfernt, leider bleibt das Feld Produktnummer in meiner Tabelle noch leer, also wird der Wert noch nicht richtig ausgelesen.:(

var_dump steht noch das:

Notice: Undefined variable: nummer in /stud/f/**/public_html/projekt/userwerkzeug.php on line 241 NULL Notice: Undefined variable: nummer in /stud/f/**/public_html/projekt/userwerkzeug.php on line 255 resource(7) of type (mysql result)

PHP:
$verbindennn = mysql_connect("localhost", "**", "**")
or die ("Fehler im System");

mysql_select_db("f_finder")
or die ("Verbidung zur Datenbank war nicht möglich...");
			$control = 0;		
			$nummer1 = mysql_query("SELECT produktnr FROM metall WHERE legierung='abc'");  
			while($row = mysql_fetch_object($nummer1))
				{
					$nummer=$row->produktnr;
				}	
mysql_free_result($nummer1);
var_dump($nummer);
 
Habs geändert, nummer war nicht deklariert, steht ja in dem var_dump auswurf, control=0 aus einen vorherigen missglückten versuch also umgeschrieben, skript:

PHP:
$verbindennn = mysql_connect("localhost", "**", "**")
or die ("Fehler im System");

mysql_select_db("f_finder")
or die ("Verbidung zur Datenbank war nicht möglich...");
            $nummer = 0;        
            $nummer1 = mysql_query("SELECT produktnr FROM metall WHERE legierung='abc'");  
            while($row = mysql_fetch_object($nummer1))
                {
                    $nummer=$row->produktnr;
                }    
mysql_free_result($nummer1);
var_dump($nummer);

Leider steht bei Produktnummer nun "0" statt "1" in der Tabelle, ich wette, wenn ich am Anfang schreibe, $nummer=1, steht 1 drin, bringt ja nix.:p
 
IIICH HABS****** :D :D :D Danke dir vielmls für deine tolle Hilfe.:D
PHP:
mysql_select_db("f_finder")
or die ("Verbidung zur Datenbank war nicht möglich...");
$nr1="select produktnr as `nummer` from metall where legierung='$abc'";
$nummer1=mysql_query($nr1);
$nr2=mysql_fetch_assoc($nummer1);
$nummer=$nr2['nummer'];
 
Zurück