• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

mySQL + PHP Frage

Worrel

Spiele-Guru
Mitglied seit
22.03.2001
Beiträge
25.128
Reaktionspunkte
10.326
Hallo,

ich frische gerade meine PHP Kenntnisse auf.
Im Moment ist die SQL Verbindung dran.

Laut einer HowTo Anleitung funktioniert das folgendermassen:

<?php
mysql_connect("HOST","USER","PASS") or die ("Keine Verbindung moeglich");
mysql_select_db("DATENBANK") or die ("Die Datenbank existiert nicht");
?>

Fragen:
1. Ist es nicht irgendwie bedenklich, daß die DB Einlogdaten dann im Klartext auf dem Webserver stehen?

2. Was ist an der folgenden Abfrage falsch?

<?php
$abfrage = "SELECT * FROM event";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->eventID;
}
?>

Tabelle "event" mit Feld "eventID" ist vorhanden.
Fehlermeldung:
mysql_fetch_object(): supplied argument is not a valid MySQL result resource

3. Werden die Tabellen (zB:

[KundenID | KundenName] <-> [KundenID | ArtikelID] <-> [ArtikelID | ArtikelName]

) innerhalb der Datenbank verknüpft oder findet die Verknüpfung ausserhalb der Tabelle über Abfragen statt?
 
Zu 1.: Der Webserver sollte PHP nicht einfach klartext ausgeben, sondern parsen. Dazu kommt, das der Mysql-Server keine Verbindungen von Überall akzeptieren sollte, sondern nur von dem Host, von dem du versuchst ihn zu erreichen. Wenn jemand an die Datei auf deinem Webserver kommt, dann muss er sich wahrscheinlich auch nicht mehr die Mühe machen, das Passwort zu verwenden, um an deine Mysql-Daten zu kommen.

Zu 2.: Versuchs mal mit mysql_fetch_array(), und dann entsprechend mit Arrays arbeitendem Code.

Zu den anderen Punkten vielleicht später mehr.
 
Es handelt sich um eine mySQLi Schnittstelle/Datenbandkformat(?) - das scheint zu heissen, daß man mit SQL gar nicht damit kommunizieren kann ... ?
 
So, jetzt habe ich eine PHP / MySQLi Seite, die zwar ohne Fehler durchläuft ...
... aber mir kein Ergebnis anzeigt :|


$db = 'DATENBANK';
$link = mysqli_connect('HOST', 'USER', 'PASS', $db);

if (!$link) {
die('Datenbank Verbindungsfehler (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}


if ($resultat = $link->query('SELECT * FROM event')) {
while($daten = $resultat->fetch_object() ){
echo "ID: ". $daten->eventID;
echo "Ort: " . $daten->eventOrt;
} // while
} // if

Es ist aber definitiv ein Datensatz mit eventID und eventOrt in der Tabelle event vorhanden...
 
Scheinbar scheitert es, egal, was ich verushce, immer an dieser Zeile:


$ergebnis = $db->query( $sql );


Laut einem Tutorial:
... senden wir die Anfrage (Query) mit dem Statement ($sql) an die Datenbank und erhalten ein Ergebnis zurück das wir in $ergebnis
ablegen, das dadurch zu einem Objekt wird.



Das Problem ist, daß $ergebnis bei mir nicht zu einem Objekt wird, so daß $ergebnis->fetch_object() immer in der Fehlermeldung "ist kein Objekt" endet ...
 
Ach, ist das schön, wenn der Schmerz nachlässt ...
Extern eingebundener Inhalt
An dieser Stelle findest du externe Inhalte von Youtube. Zum Schutz deiner persönlichen Daten werden externe Einbindungen erst angezeigt, wenn du dies durch Klick auf "Alle externen Inhalte laden" bestätigst: Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit werden personenbezogene Daten an Drittplattformen übermittelt.
Weitere Informationen gibt es auf der Datenschutzseite.
http://www.youtube.com/v/g1ShzR9VEo4&hl=en&fs=1&color1=0x2b405b&color2=0x6b8ab6http://www.youtube.com/v/g1ShzR9VEo4&hl=en&fs=1&color1=0x2b405b&color2=0x6b8ab6 http://www.youtube.com/v/g1ShzR9VEo4&hl=en&fs=1&color1=0x2b405b&color2=0x6b8ab6 http://www.youtube.com/v/g1ShzR9VEo4&hl=en&fs=1&color1=0x2b405b&color2=0x6b8ab6 http://www.youtube.com/v/g1ShzR9VEo4&hl=en&fs=1&color1=0x2b405b&color2=0x6b8ab6

... der Fehler, den ich nach mindestens 10 verschiedenen Variationen und (jetzt doch nicht) endloser mehrstündiger Fehlersuche dann endlich gefunden habe, lauert in dieser Zeile:

$mysqli = new mysqli('sql1.host.de', 'asdf', 'asdf', 'usr_db_1');

... und zwar in der Tatsache, daß ich bereits ein Forum auf der Webseite angelegt habe ...

... welches eine SQL Datenbank benötigt ...

... weshalb die SQL Datenbank für mein jetziges Vorhaben usr_db_2 heißt ...
 
Es ist doch immer ein gutes Gefühl, Fehler selbst ohne Hilfe zu finden :)
Danke =)

Aber jetzt hab ich doch noch bzw eine neue Frage:


Die Variable $picid enthält bei mir einen Zeiger auf das momentan angezeigte Element.

Ich hätte gerne folgendes:

Wenn das nächste Element auch vorhanden ist, dann erstelle einen Link dorthin, sonst nichts.

Also müßte ich in der Datenbank schauen, ob $picid+1 vorhanden ist, was ich momentan so versuche:

$piclkid= $picid+1;
$query = "SELECT * FROM bild where bildID=".$piclkid."";

if (!$result = $link->query($query)) {
$piclkid=0;
}
$result->close();

Weiß jemand, wieso das nicht klappt oder hat jemand eine bessere Idee, wie man prüfen kann, ob Datensatz n+1 existiert?
 
Zurück