PHP Php Sql

roi

Lieutenant
Registriert
Sep. 2007
Beiträge
759
Hi,
folgende abfrage hat immer funktioniert, jetzt nach 2 jahren aufeinmal nictmehr, wo ist der fehler?!!

Code:
16 $res = mysql_query("SELECT personalnummer FROM admin WHERE personalnummer ='$adminnr' AND passwort='$passwort' ;") or die(mysql_error());

Code:
20 if($adminnr==mysql_result($res, $i , 'personalnummer'))
	21 {
	22 if(mysql_result($res, $i , 'personalnummer')!='')


Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 4 in /mnt/web4/42/50/51240250/htdocs/BKK/admin.php on line 20
 
das ";" sagt das der SQL-String zuende ist
 
Ok; hab ich noch niee gesehen! In keinem Script egal wie "hcohwertig" und auch in der mySQL Doku fand ich keinen Hinweis darauf das man das verwenden kann/soll

aber ok man lernt nie aus!
 
Guck mal hier den ersten Hinweis in der Beschreibung an. Da ich damit auch mal sporadische Probleme hatte, würde ich das als erstes probieren -> Semikolon entfernen.
 
OK danke ich werd das morgen mal ausprobieren.

Das Semicolon wird bei Oracle verlang wenn man eine Abfrage abschickt. setzt man es nicht setzt es Oracle selber. Gleiches gilt für Access und ich glaube auch für MySql. So kan man zum beispiel mehrere abfragen in einem String senden und die dann halt mit nem semikolon trennen

ich glaub ich hab den fehler grad selber gesehen. Die Anführungsstriche sind einfach. So prüft er wahrscheinlich ob der Wert in der Spalte = $passwort ist und gibt deswegen keinen wert zurück, weil es natührlich kein passwort gibt das "$passwort" heist und der fetch hat nichts in der variable stehen und kackt ab.... morgen mal probieren
 
Zuletzt bearbeitet:
ich glaub ich hab den fehler grad selber gesehen. Die Anführungsstriche sind einfach. So prüft er wahrscheinlich ob der Wert in der Spalte = $passwort ist und gibt deswegen keinen wert zurück, weil es natührlich kein passwort gibt das "$passwort" heist und der fetch hat nichts in der variable stehen und kackt ab.... morgen mal probieren

Das kann eigentlich nicht sein. $passwort steht innerhalb eines Strings, der mit doppelten Anführungszeichen gebildet wurde. Somit wird $password immer durch den tatsächlichen Wert ersetzt. Die einfachen Anführungszeichen haben für PHP keine Relevanz. Sie stehen innerhalb eines Strings und haben somit keine Bedeutung. Wenn dort Buchstaben stünden, würde es PHP auch nicht stören.

Gleiches gilt für Access und ich glaube auch für MySql. So kan man zum beispiel mehrere abfragen in einem String senden und die dann halt mit nem semikolon trennen

Nein, MySQL unterstützt keine mehreren Abfragen in einem String. Mehrere Abfragen mit einem Semikolon abtrennen und auf einmal senden funktioniert nur mit phpMyAdmin, aber auch nur, weil die eine Abfrage anhand der Semikolons in mehrere aufgespaltet und einzeln ausgeführt wird. Das merkst du auch, wenn du bspw. mysql_query() einen String mit mehreren Abfragen, trennt durch Semikolons, übergibst. Es wird ein Fehler auftreten. Um mehrere Abfragen auf einmal zu schicken braucht es spezielle Funktionen von speziellen Klassen (ich glaub MySQLi und PDO bieten solche Funktionen).
 
aber wo ist dann der fehler?

ich weiss das das script mal funkioniert hat, ich hab seit mindestens 3 jahren nixmehr mit php gemacht :-/
 
SQL braucht bei direkter Abfrage an die Datenbank immer ein Semikolon zur Beendung einer Abfrage.
Die Funktion mysql_query parsed den Abfragestring so, dass ein Semikolon nicht notwendig ist, egal ob Oracle, Access, Mysql oder Informix.

Lass dir vor dem If mal die Variable $i ausgeben. Wenn du Zeile 0 abfragst dann gibt der natürlich einen Fehler zurück.
 
sorry ich habs immernoch nicht ausprobiert :D

fängt man nicht bei 0 an mit zählen? ich bin mir relativ sicher das in $i 0 drin steht
 
Hmm hast recht, es fängt mit 0 an. Der alte Fluch wieder.

Trotzdem liegt da die Fehlermeldung. Das SQL Query gibt keine Datensätze zurück.
Der Grund warum plötzlich ein Script nicht mehr läuft, liegt meistens an den Daten die abgefragt werden.
 

Ähnliche Themen

M
Antworten
47
Aufrufe
4.412
McMoneysack91
M
C
  • Gesperrt
Antworten
5
Aufrufe
977
Zurück
Oben