MySQL Anfrage

Die Scriptsprache PHP fĂĽr die Gestaltung von dynamischen Websites.

MySQL Anfrage

Beitragvon Greg » Sa 20 Mär, 2004 19:28

Hallo,
ich möchte ein Newssystem mit php machen. Den kompletten Beitrag kann man sich dann über die Datei viewnews.php z.B.: viewnews.php?id=4

In der viewnews steht folgende Anfrage an die Datenbank
Code: Alles auswählen
  $db = @MYSQL_CONNECT($db_server,$db_user,$db_passwort);
  $db_select = @MYSQL_SELECT_DB($db_name);
  $query = "SELECT * FROM news WHERE id='".$id."'";
  $result = mysql_query($query);
  $row = mysql_fetch_row($result);


Aber es funktioniert nicht. Was habe ich falsch gemacht?
Greg
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 77
Registriert: So 20 Jul, 2003 21:21

Beitragvon burnie51 » Sa 20 Mär, 2004 22:58

also ich denke du solltest die befehle mysql_connect und mysql_select_db klein schreiben

greetz,
burnie
burnie51
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 47
Registriert: Di 15 Jul, 2003 17:49

Beitragvon radditz » Sa 20 Mär, 2004 23:07

und wenn du das @ vorne wegmachst bekommste auch ne schöne detailierte fehlermeldung ;)
Telematica DSL Solo Pro 30 Mbit/s
Vorher: A1 VDSL 16 Mbit/s
radditz
Ultimate Power-User
Ultimate Power-User
 
Beiträge: 4399
Registriert: Mo 23 Jun, 2003 16:50

Beitragvon Greg » So 21 Mär, 2004 19:13

Habe alles gemacht, mysql_connect und mysql_select_db klein geschrieben und das @ weggenommen. Funktioniert noch immer nicht.
Ăśbrigens: wenn ich z.b. screibe SELECT * FROM news WHERE ID=1 , dann funktionierts
Greg
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 77
Registriert: So 20 Jul, 2003 21:21

Beitragvon ragman » So 21 Mär, 2004 21:08

Das id='" könnte doch was damit zu tun haben, oder?

Nimm fĂĽr id mal was anderes als '
ragman
Board-Mitglied
Board-Mitglied
 
Beiträge: 244
Registriert: Mo 23 Jun, 2003 18:31
Wohnort: Villach, Ă–sterreich

Beitragvon burnie51 » Mo 22 Mär, 2004 16:16

dann schreibs einfach so:
[php]$query = "SELECT * FROM news WHERE id=".$id;[/php]
burnie51
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 47
Registriert: Di 15 Jul, 2003 17:49

Beitragvon Greg » Mo 22 Mär, 2004 18:53

burnie51 hat geschrieben:dann schreibs einfach so:
[php]$query = "SELECT * FROM news WHERE id=".$id;[/php]


Dann kommt folgende Meldung
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in G:\sysadmin\Apache\Apache2\htdocs\RCnet\admin\viewnews.php on line 16
Greg
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 77
Registriert: So 20 Jul, 2003 21:21

Beitragvon burnie51 » Mo 22 Mär, 2004 21:19

bist du sicher, dass die variable $id existiert bzw. etwas drinnen steht?
ĂĽberprĂĽfe es einfach mit der zeile
Code: Alles auswählen
echo ((isset($id))?"existiert":"existiert nicht");


wenn $id deinem script ĂĽbergeben wird (news.php?id=...) dann solltest du sicherstellen, dass REGISTER_GLOBALS auf ON ist.

Probier einfach mal diese zeile vor der 1. verwendung von $id:
Code: Alles auswählen
$id=$_GET["id"];


greetz,
burnie
burnie51
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 47
Registriert: Di 15 Jul, 2003 17:49

Beitragvon Greg » Di 23 Mär, 2004 17:49

Hallo brunie,
alles klar mit $id=$_GET["id"]; gehts. Wahrscheinlich habe ich die gloabalen Variablen nicht aktiviert. Wie kann ich das aktivieren? Ich verwende Apache Version 2.0.48 als Webserver.
Greg
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 77
Registriert: So 20 Jul, 2003 21:21

Beitragvon burnie51 » Di 23 Mär, 2004 23:09

dazu musst du die php.ini ändern
und zwar musst du die zeile
Code: Alles auswählen
register_globals = Off

auf
Code: Alles auswählen
register_globals = On
ändern
burnie51
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 47
Registriert: Di 15 Jul, 2003 17:49

Beitragvon Greg » Mi 24 Mär, 2004 19:07

Alles klar, habe den eintrag in der ini geändert. Vielen Dank für den Tipp
Greg
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 77
Registriert: So 20 Jul, 2003 21:21

Beitragvon Gustavo el Geranie » So 28 Mär, 2004 21:34

Sei aber vorsichtig mit
[php]$query = "SELECT * FROM news WHERE id=".$_GET['id'];[/php]
Das ist ein potentielles Sicherheitsloch.
Weil stell dir vor, einer ruft das wie folgt auf:
http://domain.at/script.php?id=1 or 1=1"
dann schaut deine Abfrage so aus:
[php]$query = "SELECT * FROM news WHERE id=1 OR 1=1";[/php]
das heiĂźt er bekommt alle Meldungen. Bei Meldungen vermutlich kein Problem, bei Benutzerdaten schon ;)
Gustavo el Geranie
Neu im Board
Neu im Board
 
Beiträge: 14
Registriert: Mo 23 Jun, 2003 16:10

Beitragvon Greg » Mi 31 Mär, 2004 20:44

Hallo

vielen Dank fĂĽr den Tipp!

Habs aber wie folgt gelöst:

[PHP]
<?
$id = $_GET["id"];
$query = "SELECT * FROM news WHERE id=$id;"
?>
Greg
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 77
Registriert: So 20 Jul, 2003 21:21


ZurĂĽck zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 22 Gäste