Probleme mit einem Forum & mySQL

Hi ich habe ein Problem mit meiner Datenbank:
ich habe mithilfe von php ein Forum gemacht und dieses mit xampp auf dem PC getestet aber auf einem Internetserver funktioniert das nicht mehr so ganz folgendes ist das Problem

Die Fehlermeldung:
Warning : mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/vhosts/111mb.de/user/www/champsofchaos/new_topic.php on line 9

Die betreffende codezeile:
$dn1 = mysql_fetch_array(mysql_query(‚select count(c.id) as nb1, c.name from categories as c where c.id="‘.$id.’"’));
if($dn1[‚nb1‘]>0)

Also wie bereits gesagt, es ging auf dem Offlineserver, aber nicht im Internet.
Vielleicht kann ich mit jemanden der Zeit und Skype hat mit mir zusammen gucken.
Also schonmal vielen Dank im vorraus :wink:

Hallo

scheint wohl keine resource als ergebnis zu werfen .

mal nachgucken mit mysql_error

 $queryId = mysql\_query($query);
 if (! $queryId) {
 throw new Exception(mysql\_error().". Query was:\n\n".$query."\n\nError number: ".mysql\_errno();
 }


Diese Erweiterung ist seit PHP 5.5.0 als veraltet markiert und wird in der Zukunft entfernt werden. Verwenden Sie stattdessen die Erweiterungen MySQLi oder PDO_MySQL.

wo muss ich das denn einfügen?

Hallo ,

du kannst im phpmyadmin erstmal gucken ob der Query so überhaupt funktioniert .
ob also alle tabellen da sind diese auch zugriff haben etc etc

wenn das kein fehler wirft , dann kann man den code via mysql_error und nummer abfragen und ausgeben

Die Fehlermeldung:
Warning : mysql_fetch_array(): supplied argument is not a valid
MySQL result resource in
/var/vhosts/111mb.de/user/www/champsofchaos/new_topic.php on
line 9

dazu sollte man den ganzen kram auch mal richtig schreiben

$qstr =



> Die betreffende codezeile:  
> $dn1 = mysql\_fetch\_array(mysql\_query('select count(c.id) as  
> nb1, c.name from categories as c where c.id="'.$id.'"'));  
> if($dn1['nb1']\>0)


Dann nur noch die Ausgabe finden wo der Fehler steht :smile: Quellcode suche ist manchml einfacher bei html !

select count(c.id) as nb1, c.name from categories as c where c.id="’.$id.’"’

Das der Query lokal funktioniert hat, möchte ich bezweifeln :wink:

Wenn du eine Aggregatfunktion (count) zusammen mit anderen Spalten abrufst, bruchst du auch ein „group by c.name“ und bekommst dann aber nicht nur eine Zeile im Ergebnis, sondern die Anzahl in jeder Kategorie.

„id“ klingt aber eigentlich, als wäre es eindeutig, wenn dem so ist, warum willst du die 1 abrufen ? Um festzustellen, ob es die id gibt, rufe halt einfach nur c.name ab und wenn mysql_num_rows davon 0 ist, war keine da…

$res = mysql\_query(select count(c.id) as nb1, c.name from categories as c where c.id="'.$id.'"');
if (mysql\_num\_rows($res)\>0) {
 list($catname) = mysql\_fetch\_row($res);
}

Nochmal, das war zu schnell abgeschickt :frowning:

$res = mysql\_query("select c.name from categories as c where c.id="'.$id.'"');
if (mysql\_num\_rows($res)\>0) {
 list($catname) = mysql\_fetch\_row($res);
}

der ist ja mal fehlerhaft ,
Anführungzeichen und dann ein hochkomma ??? hä

Ja, hast Recht, das muss ein Hochkomma sein. Die (kopierte) Kombination "’ ist in dem Textfeld ziemlich mies zu lesen :frowning: Das Prinzip sollte aber auch so klar sein.

Und schon ist sie da, die SQL-Injectionlücke. Bitte, veröffentliche das nicht, sonst geht es sehr schnell :boom: