ubuntuusers.de

PHP Abfrage klappt nicht

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

thom_raindog

Avatar von thom_raindog

Anmeldungsdatum:
20. Mai 2005

Beiträge: 2848

Guten Morgen zusammen.

ich hab die Tage ein altes Backup einer Website auf meiner Server eingespielt und soweit funktioniert auch alles klaglos. Außer einer php-Datei, deren Aufruf an die MySql nicht funktioniert, laut phpMyAdmin mit dem eher schwammigen Fehler 1064 abbricht. Den Code der Abfrage poste ich hier mal, eventuell fällt einem von euch was auf, das wäre klasse.#

1
2
3
4
5
6
7
8
9
<?php
 include("siteinit.inc");
 
 db_verbindung($host_name, $db_name, $user_name, $user_passw);
 
 //$t_name wurde duch teams.php in der Url übergeben durch ....showteam?t_name=.... 
 $abfrage = "SELECT s.id as s_id, s.sp_name, s.sp_position, s.ma, s.st, s.ag, s.av, s.sp_skills, s.ij, s.cp, s.td, s.in, s.cs, s.vp, s.sp, s.cost, t.coach, t.rasse, t.t_name, t.rerolls, t.id as t_id, t.RR_cost, t.assistantcoaches, t.cheerleaders, t.apotheker, t.teamwizard, t.teamrating, t.treasury, t.tcot, t.fanfactor FROM Spieler s, Team t WHERE s.team='$t_name' AND t.t_name='$t_name' ORDER BY nummer ASC";
 $ergebnis = mysql_query($abfrage);
 $result_cnt = mysql_numrows($ergebnis); 

Ich geb offen zu ich hab das Ding nicht selbst programmiert. Zu dem damaligen Autor hab ich keinen Kontakt mehr, und außer in Eigenregie das eine oder andere ändern hab ich nichts drauf... Jemand ne Idee? Was würde an Informationen denn helfen?

q-rios

Anmeldungsdatum:
28. Juni 2007

Beiträge: 260

Ob die Abfrage stimmt, kann ich nicht beurteilen, dazu sollte man die DB kennen. Syntax sollte korrekt sein. mysql_numrows gibts nicht, wenn dann mysql_num_rows.

Noch was: Bring das bitte nicht online, weil da SQL Injection lücken drin sind und vermutlich nicht nur die.

Bleys

Anmeldungsdatum:
13. August 2006

Beiträge: 6172

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php include("siteinit.inc"); 
db_verbindung($host_name, $db_name, $user_name, $user_passw); 
//$t_name wurde duch teams.php in der Url übergeben durch ....showteam?
$abfrage = "SELECT s.id as s_id, s.sp_name, s.sp_position, s.ma, s.st, s.ag, s.av, s.sp_skills, s.ij, s.cp, s.td, s.in, s.cs, s.vp, s.sp, s.cost, t.coach, t.rasse, t.t_name, t.rerolls, t.id as t_id, t.RR_cost, t.assistantcoaches, t.cheerleaders, t.apotheker, t.teamwizard, t.teamrating, t.treasury, t.tcot, t.fanfactor FROM Spieler s, Team t WHERE s.team='$t_name' AND t.t_name='$t_name' ORDER BY nummer ASC"; 
$ergebnis = mysql_query($abfrage); 
if (!$ergebnis) {
    $message  = 'query Fehler: ' . mysql_error() . "\n";
    $message .= 'query Befehl: ' . $query;
    die($message);
}
$result_cnt = mysql_numrows($ergebnis);

Erweiter mal die Abfrage und poste die Fehlermeldung.

http://de.php.net/manual/en/function.mysql-num-rows.php

q-rios

Anmeldungsdatum:
28. Juni 2007

Beiträge: 260

Code nochmal korrigiert:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php include("siteinit.inc"); 
db_verbindung($host_name, $db_name, $user_name, $user_passw); 
//$t_name wurde duch teams.php in der Url übergeben durch ....showteam?
$abfrage = "SELECT s.id as s_id, s.sp_name, s.sp_position, s.ma, s.st, s.ag, s.av, s.sp_skills, s.ij, s.cp, s.td, s.in, s.cs, s.vp, s.sp, s.cost, t.coach, t.rasse, t.t_name, t.rerolls, t.id as t_id, t.RR_cost, t.assistantcoaches, t.cheerleaders, t.apotheker, t.teamwizard, t.teamrating, t.treasury, t.tcot, t.fanfactor FROM Spieler s, Team t WHERE s.team='$t_name' AND t.t_name='$t_name' ORDER BY nummer ASC"; 
$ergebnis = mysql_query($abfrage); 
if (!$ergebnis) {
    $message  = 'query Fehler: ' . mysql_error() . "\n";
    $message .= 'query Befehl: ' . $abfrage;
    die($message);
}
$result_cnt = mysql_num_rows($ergebnis);

thom_raindog

(Themenstarter)
Avatar von thom_raindog

Anmeldungsdatum:
20. Mai 2005

Beiträge: 2848

q-rios

Noch was: Bring das bitte nicht online, weil da SQL Injection lücken drin sind und vermutlich nicht nur die.

Tscha... viel Auswahl hab ich nicht, da ich die Funktionen der Website brauche, und von PHP halt Nahe Null Ahnung hab. Sicherheitslücken schließen ist da mehrere Kilometer über meinem Horizont fürchte ich... Die geänderte Abfrage bau ich nachher mal ein und geb Bescheid. Dickes Danke für die schnelle Hilfe an euch beide!

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

thom_raindog schrieb:

Tscha... viel Auswahl hab ich nicht, da ich die Funktionen der Website brauche, und von PHP halt Nahe Null Ahnung hab. Sicherheitslücken schließen ist da mehrere Kilometer über meinem Horizont fürchte ich...

Tja, dann viel Spaß mit dem Streichholz im Dynamitlager - wenn man keine Taschenlampe zur Verfügung hat, würde ich da einfach draußen bleiben, bis ich eine habe... 😉

q-rios

Anmeldungsdatum:
28. Juni 2007

Beiträge: 260

thom_raindog schrieb:

q-rios

Noch was: Bring das bitte nicht online, weil da SQL Injection lücken drin sind und vermutlich nicht nur die.

Tscha... viel Auswahl hab ich nicht, da ich die Funktionen der Website brauche, und von PHP halt Nahe Null Ahnung hab. Sicherheitslücken schließen ist da mehrere Kilometer über meinem Horizont fürchte ich... Die geänderte Abfrage bau ich nachher mal ein und geb Bescheid. Dickes Danke für die schnelle Hilfe an euch beide!

Wenn du den Code so online stellst und nicht auf einem Entwicklungssystem, dann hats jeder total leicht die Lücke auszunutzen. Ihm wird sein Fehler direkt angezeigt mit Verbesserungsvorschlag

thom_raindog

(Themenstarter)
Avatar von thom_raindog

Anmeldungsdatum:
20. Mai 2005

Beiträge: 2848

q-rios schrieb:

Code nochmal korrigiert:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php include("siteinit.inc"); 
db_verbindung($host_name, $db_name, $user_name, $user_passw); 
//$t_name wurde duch teams.php in der Url übergeben durch ....showteam?
$abfrage = "SELECT s.id as s_id, s.sp_name, s.sp_position, s.ma, s.st, s.ag, s.av, s.sp_skills, s.ij, s.cp, s.td, s.in, s.cs, s.vp, s.sp, s.cost, t.coach, t.rasse, t.t_name, t.rerolls, t.id as t_id, t.RR_cost, t.assistantcoaches, t.cheerleaders, t.apotheker, t.teamwizard, t.teamrating, t.treasury, t.tcot, t.fanfactor FROM Spieler s, Team t WHERE s.team='$t_name' AND t.t_name='$t_name' ORDER BY nummer ASC"; 
$ergebnis = mysql_query($abfrage); 
if (!$ergebnis) {
    $message  = 'query Fehler: ' . mysql_error() . "\n";
    $message .= 'query Befehl: ' . $abfrage;
    die($message);
}
$result_cnt = mysql_num_rows($ergebnis);

Damit bekomme ich ein komplett leeres Fenster als Output... das kann ja kaum so gewollt sein, oder? 😉 Kann das was mit PHP-Versionen zu tun haben? Ich erinnere mich auf dem alten Server PHP4 laufen gehabt zu haben, aktuell PHP5...

Bleys

Anmeldungsdatum:
13. August 2006

Beiträge: 6172

Dann würde ich mal sagen er kommt gar nicht bis zum Query. Das include gehört übrigens noch in eine neue Zeile. Setze mal zu Beginn jeder Seite die involviert ist eine Ausgabe:

1
2
3
4
5
echo '<pre>';
print_r($_REQUEST);
print_r($_SESSION);
echo '</pre>';
die('<scriptname>');

in jedem Script das fehlerfrei durchläuft den Bereich auskommentieren.

thom_raindog

(Themenstarter)
Avatar von thom_raindog

Anmeldungsdatum:
20. Mai 2005

Beiträge: 2848

Als Ergebniss kam:

Array
(
    [t_name] => Windblown
    [phpbb3_apth2_u] => 64
    [phpbb3_apth2_k] => 
    [phpbb3_apth2_sid] => 60ba627db652b5514832adc4e4cd8602
)

raus. Ich hab jetzt mal noch

1
$t_name = $_GET['t_name']; 

eingebaut, weil mein Provider (ein Kollege von mir) meinte das wäre mittlerweile aus Sicherheitsgründen nötig. Damit kommt $t_name als Übergabe aus der Seite vorher wenigstens an, Ergebnisse bekomme ich aber immer noch keine rein...

Bleys

Anmeldungsdatum:
13. August 2006

Beiträge: 6172

Hol Dir die Ausgabe in ein Array, z.B. mit mysql_fetch_assoc und gebe es aus.

Es wird hier schwierig bis unmöglich zu helfen ohne die vollständigen PHP Scripte zu kennen.

Du solltest Dir jemanden z.B. per Teamviewer und Skype dazu holen der sich mit php auskennt.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Bleys schrieb:

Du solltest Dir jemanden z.B. per Teamviewer und Skype dazu holen der sich mit php auskennt.

Er sollte sich überhaupt jemanden oragnisieren, der das für ihn erledigt. Die Fragmente an sich sehen ja schon gruselig aus - und wenn dann noch jemand ohne Ahnung daran herumfrickelt, kann es nur noch schlimmer werden...

Diese Mischung aus Code und Entwickler sind genau das, was PHP zu einem schlechten Ruf verhilft 😉

thom_raindog

(Themenstarter)
Avatar von thom_raindog

Anmeldungsdatum:
20. Mai 2005

Beiträge: 2848

Puuuh... also werd ich es wohl bis auf weiteres als unfertiges Projekt liegen lassen bis ich an jemanden komme der mit mir die Sache "bereinigt"... Hmmtja. In jedem Fall danke an euch ☺

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

thom_raindog schrieb:

Puuuh... also werd ich es wohl bis auf weiteres als unfertiges Projekt liegen lassen bis ich an jemanden komme der mit mir die Sache "bereinigt"... Hmmtja. In jedem Fall danke an euch ☺

Glaub mir, alleine aus Sicherheitsgründen ist Dir das schon zu empfehlen! Worum genau ging es denn? Evtl. gibt es ja auch schon fertige Lösungen? (die man ggf. noch ein wenig anpassen muss)

q-rios

Anmeldungsdatum:
28. Juni 2007

Beiträge: 260

Lysander schrieb:

thom_raindog schrieb:

Puuuh... also werd ich es wohl bis auf weiteres als unfertiges Projekt liegen lassen bis ich an jemanden komme der mit mir die Sache "bereinigt"... Hmmtja. In jedem Fall danke an euch ☺

Glaub mir, alleine aus Sicherheitsgründen ist Dir das schon zu empfehlen! Worum genau ging es denn? Evtl. gibt es ja auch schon fertige Lösungen? (die man ggf. noch ein wenig anpassen muss)

So wie das Query aussieht, wirds ein Browsergame sein oder irgendwas zum Teamsverwalten

Antworten |