Datenbank Abfrage funktioniert nicht

Rudi-Ratlos

Neuer Benutzer
Beiträge
4
Kann mir jemand bei der Datenbank Abfrage helfen.
Hab mal was versucht geht aber nicht.

PHP:
// Datenbankverbindung steht 

   $zahl1 = $_POST["zahl1"];
   $zahl2 = $_POST["zahl2"];
   $zahl3 = $_POST["zahl3"];
   $zahl4 = $_POST["zahl4"];
   $zahl5 = $_POST["zahl5"];
   $zahl6 = $_POST["zahl6"];

// Hier müßte die Abfrage stehen

   $abfrage = "SELECT id
   FROM lotto
   WHERE @wert IN (zahl1, zahl2, zahl3, zahl4, zahl5, zahl6)
   $ergebnis = mysql_query($abfrage);
   $row = mysql_fetch_object($ergebnis);

Kann mir jemand Helfen
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.160
Kann mir jemand bei der Datenbank Abfrage helfen.
Hab mal was versucht geht aber nicht.

PHP:
// Datenbankverbindung steht
 
  $zahl1 = $_POST["zahl1"];
  $zahl2 = $_POST["zahl2"];
  $zahl3 = $_POST["zahl3"];
  $zahl4 = $_POST["zahl4"];
  $zahl5 = $_POST["zahl5"];
  $zahl6 = $_POST["zahl6"];
 
// Hier müßte die Abfrage stehen
 
  $abfrage = "SELECT id
  FROM lotto
  WHERE @wert IN (zahl1, zahl2, zahl3, zahl4, zahl5, zahl6)
  $ergebnis = mysql_query($abfrage);
  $row = mysql_fetch_object($ergebnis);

Kann mir jemand Helfen


Was nutzt Du für komische Spaltennamen? Ich habe mal eine Tabelle erstellt:

Code:
mysql> create table lotto (`@wert` int);
Query OK, 0 rows affected (0.00 sec)

Warum folgende 2 Abfragen auf diese selbe Tabellen so wie folgend unterschiedlich reagieren ist mir unklar.
Die erste sollte einen Fehler liefern oder aber dasselbe wie die 2. Abfrage. Einfach nur FAIL.

Code:
mysql> select * from lotto where @wert in (1,2);
Empty set (0.00 sec)

mysql> select * from lotto where `@wert` in (1,2);
+-------+
| @wert |
+-------+
|     1 |
|     2 |
+-------+
2 rows in set (0.00 sec)

Dein Code ist massiv anfällig für SQL-Injection, Du hast keinerlei Fehlerprüfung, die PHP-Mysql-Extension ist deprecated, MySQL insgesamt Murks.
 

Rudi-Ratlos

Neuer Benutzer
Beiträge
4
Es geht um Lottozahlen.
Es werden über ein Formular 6 Zahlen eingegeben.
Dann soll mit SQL abgefragt werden, ob die 6 Zahlen schon mal gezogen wurden , also in der Datenbank vorkommen und die ID Nummer wiedergeben. Die Reihenfoge der gezogenen Zahlen soll dabei keine Rolle spielen.


So sieht die Datenbank aus.


id,tag,monat,jahr,zahl1,zahl2,zahl3,zahl4,zahl5,zahl6
1,9,10,1955,13,41,3,23,12,16
2,16,10,1955,12,32,30,49,3,18
3,23,10,1955,34,12,14,24,36,23
4,30,10,1955,30,13,36,44,23,4
5,6,11,1955,31,44,6,49,5,39
6,13,11,1955,29,44,6,37,22,18
7,20,11,1955,27,44,8,16,12,4
8,27,11,1955,26,37,9,44,46,24
9,4,12,1955,47,20,31,26,21,5
10,11,12,1955,10,26,37,8,31,22
11,18,12,1955,26,8,42,39,36,14
12,26,12,1955,34,38,42,39,9,5
 
Werbung:
Oben