SQl Abfrage Hilfe

  • PHP

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von Lukas.

    SQl Abfrage Hilfe

    Folgende Funktion will nicht funktionieren, könntet ihr mir helfen :O.. Ihr möchtet jetzt bestimmt das ich den Fehler näher beschreibe als "geht nicht", aber ist leider nicht wirklich nötig, vll. könnt ihr PHP-Profis mir sagen falls ich irgendwas falsch verkettet habe oder sowas, pleassse! Benutzerdaten habe ich natürlich rausgenommen..

    PHP-Quellcode

    1. <?php
    2. function Login ($ID, $PW){
    3. $verbindung = mysql_connect("ServerIP","Benutzer","Passwort");
    4. mysql_select_db("Datenbankname", $verbindung);
    5. $cVorname=array();
    6. $cNachname=array();
    7. $cID=array();
    8. $cPW=array();
    9. $cHID=array();
    10. $sql="SELECT cVorname, cNachname, cID, cPW, cHID FROM Tabellenname WHERE cID=' + $ID + ' AND cPW=' + $PW + '";
    11. $ergebnis=mysql_query($sql,$verbindung) or die(mysql_error());
    12. while ($row = mysql_fetch_object($ergebnis))
    13. {
    14. array_push($cVorname,$row->cVorname);
    15. array_push($cNachname,$row->cNachname);
    16. array_push($cID,$row->cID);
    17. array_push($cPW,$row->cPW);
    18. array_push($cHID,$row->cHID);
    19. }
    20. echo $cVorname[0];
    21. mysql_close($verbindung);
    22. }
    23. ?>


    Unten das Echo dient zum testen :/..
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rootbob91“ ()

    mysql_* is bad! Nutz mysqli!
    und Zeichenverkettung in PHP geht mit einem Punkt.

    Quellcode

    1. $andereVar = 'ist';
    2. $var = 'Das '.$andereVar.' ein Satz';
    Deine Art die Variablen in den String zu setzten ist auch totaler quatsch.

    Rootbob91 schrieb:

    "SELECT cVorname, cNachname, cID, cPW, cHID FROM Tabellenname WHERE cID=' + $ID + ' AND cPW=' + $PW + '";

    wenn du den String schon mit " einleitest kannst du ihn nicht einfach mit ' unterbrechen ...

    PHP-Quellcode

    1. "SELECT cVorname, cNachname, cID, cPW, cHID FROM Tabellenname WHERE cID=" . $ID . " AND cPW='" . $PW . "'";

    hättest du deinen Code in die php - tags gesetzt, hättest du das auch schon an der Farbgebung gesehen

    Rootbob91 schrieb:

    Ihr möchtet jetzt bestimmt das ich den Fehler näher beschreibe als "geht nicht", aber ist leider nicht wirklich nötig
    und warum sollte eine Fehlerbeschreibung nicht nötig sein ?

    und auch wenn ich jetzt etwas meckernd erscheine aber deinen individuellen Benutzertitel finde ich nicht sehr öffentlichkeitstauglich
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manü“ ()

    Hey, erstmal vielen Dank für eure Antworten.

    Ich werde demnächst nachschauen, sobald ich wieder ans Projekt ran kann..

    Das mit dem Zusatznamen müsst ihr mir nicht übel nehmen, der is schon seit Ewigkeiten so und ist n Spitzname, den ich mal bekommen habe.. Hat aber nichts mit einer Vergew... in diesem Sinne zu tun.. Hab Ihn mal netterweise rausgenommen.


    Den Fehler kann ich leider nicht beschreiben, da kein wirklicher Fehler kommt, der Rest vom Script wird einfach nur dann so im Browser angezeigt. Tut mir leid mit den Tags.. Ich bin das nicht gewohnt mit PHP zu arbeiten..

    Ps: Ich hatte einen Teil des Codes aus nem alten Buch, daher vll. die ältere Variante mit mysql :).
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Rootbob91“ ()

    Hallo nochmal,

    ich habe eine Frage.. Und zwar kann ein PHP Script auf jede Datenbank zugreifen, denn ich habe die Datenbank (der Zugriff von außen funktioniert mit meinem Programm) auf meinem PC liegen.

    Kann das PHP Script darauf zugreifen, oder nur auf Datenbanken, die sich innerhalb des Webspaces befinden!?
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Eigentlich sollte es egal sein wo deine Datenbank liegt, der Verbindungsaufruf muss dann halt richtig über die URL gesetzt sein.
    Man hat ja häufig beides im gleichen Webspace, aber bei größeren Projekten/Firmen/Einrichtungen ist Webserver und DB-Server schonmal getrennt. Daher ist es eigentlich gängig.
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Solange du deinen PC nicht als Datenbankserver einrichtest und ihn bei der Verbindung angibst, wird PHP das nicht mutmaßen. PHP ist komplett serverseitig.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Ich danke euch schonmal mega, dass ihr überhaupt schreibt :)!!

    Die Sache sieht so aus:
    Spoiler anzeigen

    HTML-Quellcode

    1. <div id="Inhalt" style="background-color:#F2F2F2;">
    2. <hr>
    3. <div>
    4. <form action="input_text.htm" style="margin-left:15em;">
    5. <p>Benutzer ID:<br><input name="id" type="text" size="30" maxlength="30"></p>
    6. <p>Passwort:<br><input name="pw" type="password" size="30" maxlength="40"></p>
    7. <input type="button" name="Text" value="Einloggen" onclick="Login(this.form.id.value,this.form.pw.value)">
    8. </form>
    9. <br>
    10. </div>
    11. </div>

    PHP-Quellcode

    1. <?php
    2. function Login ($ID, $PW){
    3. $verbindung = mysqli_connect("IP","BENUTZER","PASSWORT");
    4. mysqli_select_db("DB", $verbindung);
    5. $cVorname=array();
    6. $cNachname=array();
    7. $cID=array();
    8. $cPW=array();
    9. $cHID=array();
    10. $sql="SELECT cVorname, cNachname, cID, cPW, cHID FROM Tabellenname WHERE cID=" . $ID . " AND cPW='" . $PW . "'";
    11. $ergebnis=mysqli_query($sql,$verbindung) or die(mysqli_error());
    12. while ($row = mysqli_fetch_object($ergebnis))
    13. {
    14. array_push($cVorname,$row->cVorname);
    15. array_push($cNachname,$row->cNachname);
    16. array_push($cID,$row->cID);
    17. array_push($cPW,$row->cPW);
    18. array_push($cHID,$row->cHID);
    19. }
    20. echo $cVorname[0];
    21. mysqli_close($verbindung);
    22. }
    23. ?>



    Wie ihr seht, wird die Funktion Login oben mit den Parametern im Button onclick aufgerufen, kann das so funktionieren, bin wie gesagt nicht gut mit PHP :/.. Das Script liegt auf dem Server und die DB Verbindung ist auch richtig, nur es wird nichts angezeigt im Browser, es kommt keine Errormeldung oder sonstiges :(!

    Ps: Was sagt dieses action input_text.htm oben aus?
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rootbob91“ ()

    PHP ist serverseitig, aber wenn eine Seite einmal angefragt und "ausgeliefert" wurde, ist sie beim Client. Du müsstest entweder JS nehmen und per AJAX arbeiten, oder du belässt das Formular als klassisches Formular, dass du mit PHP angehst: php.net/manual/en/tutorial.forms.php
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Soooo, ich habe jetzt nochmal alles durchklabüsert und durch eine or die Anweisung im PHP-Code kam raus, dass er die Verbindung zur DB nicht herstellen kann?

    Ich benutze genau den selben "Connection String", daher genau dieselbe IP, Benutzer, Passwort Kombination und im Programm funktionierts ja auch?

    Möchte PHP noch was anderes als die Server IP angegeben haben?

    Selbst

    SQL-Abfrage

    1. or die('Error connecting to mysql: '.mysqli_error())
    bringt nichts, dort kommt nur die vorige Errormeldung aber die eigentlich Error-Funktion wird gar nicht befüllt Oo?
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rootbob91“ ()

    *PUSH* Ich bin echt am verzweifeln, keiner mehr ne Idee?

    Ich habe mittlerweile aaaallles ausprobiert.

    Ich habe halt mit dem SQL Management Studio 2013 einen Server am laufen, mit meinem in Visual Basic programmierten Programm kann ich ja auch darauf zugreifen, mit dem selben Connection String den ich in php verwenden will, aber warum geht das bei PHP nicht Oo??!

    Ich habe bei domainssaubillig halt den Webspace gemietet und dort liegt dann auch das PHP Script was auf die Datenbank zugreifen soll, die auf meinem HOME PC liegt.
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Du kannst soweit ich weiß mit PHP nicht auf einen MSSQL-Server zugreifen.
    Dafür benötigst du einen MySql-Server.


    Okay mein Fehler. Geht doch, aber nicht über mysqli sondern: php.net/manual/de/book.mssql.php

    lg.
    lg.

    LucaWelker
    Hey, danke für deine Antwort,

    leider hab ich das so auch schon versucht:

    PHP-Quellcode

    1. // Mit MSSQL verbinden
    2. $verbindung = mssql_connect('IP,1433', 'sa', 'Passwort');
    3. if (!$verbindung) {
    4. die('Beim Aufbau der Verbindung mit MSSQL ging etwas schief');
    5. }
    6. echo "Verbindung geöffnet";


    Da passiert dann gar nichts, ich bekomme ne leere Seite angezeigt :(!
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Japp, auf jeden Fall..

    Ich habe wie bereits erwähnt ein Programm gemacht, was auch getestet von anderen PCs auf die Datenbanken in meinem PC zugreifen kann und der Connection String sieht dort auch nicht anders aus. Daher verzweifel ich hier :(..

    Hab sogar meinem Webspace Anbieter geschrieben, ob die die Zugriffe auf externe Datenbanken blocken, etc. Ist nicht der Fall..

    ich bin gerade auch nochmal extra in die Servereinstellungen gegangen und habe nachgeschaut (Anhang)
    Bilder
    • config.png

      44,97 kB, 956×398, 151 mal angesehen
    • config2.PNG

      50,6 kB, 699×628, 120 mal angesehen
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rootbob91“ ()

    Mit dem Befehl und den Benutzerdaten des Webhosting Anbieters kann ich von dem Script ohne Probleme auf die Datenbank die er dort liegen hat zugreifen, allerdings kann ich nicht auf meine lokale Datenbank auf den PC damit zugreifen.

    PHP-Quellcode

    1. $connect = mysqli_connect("localhost","user","passwort","db") or die ("Failed to connect to MySQL: " . mysqli_connect_error());


    Das heißt ja entweder, dass tatsächlich noch eine Konfiguration falsch ist bei mir auf dem PC (was ich nicht glaube, denn mit dem sqlcmd Tool kann ich mit dem selben Connection String auch auf meine DB zugreifen9, oder (was ich für wahrscheinlicher halte) das Script kann nicht nach außen Routen, also zu meiner IP..

    Der Anbieter hat mir allerdings via Email geschrieben, dass Zugriffe nach außen zugelassen werden, allerdings VON außen nicht, sonst würde ich ja mit dem Programm dann auch einfach auf die Webhosting DB zugreifen :/...

    Ps: Im Anhang eine visuelle Darstellung falls ihr mir nicht ganz folgen könnt.
    Bilder
    • tree.png

      5,13 kB, 475×267, 154 mal angesehen
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Du willst wirklich deinen Home-PC als Datenbankserver verwenden? Halte ich für keine gute Idee. Was für Gründe hast du dafür?
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Hey, nene. Das ist nur während der Entwicklung so, danach wollte ich dann einen "Buchen".

    Aktuell bin ich aber eh dabei die Idee umzuschwenken, da ich ja jetzt folgendes Problem habe:

    1. Wenn ich die Datenbank lokal weiter benutze, dann kann ich aus dem Script (auß dem Webhost) nicht darauf zugreifen.
    2. Wenn ich die Online Datenbank benutze (von Domainssaubillig.de), dann kann ich von außen, sprich von meinem Programm nicht darauf zugreifen, weil die das nicht möchten.
    Doch dort funktioniert wiederrum das jetzige Script so halb, bei der Verbindung kommt kein Fehler mehr die funktioniert auch. Allerdings möchte die Abfrage nicht klappen.

    Da kommt die Meldung das die Abfrage ungültig ist.
    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. $ID=$_POST["id"];
    3. $PW=$_POST["pw"];
    4. require_once ('einstellungen.php');
    5. $db_link = mysqli_connect (
    6. MYSQL_HOST,
    7. MYSQL_BENUTZER,
    8. MYSQL_KENNWORT,
    9. MYSQL_DATENBANK
    10. );
    11. $sql = "SELECT * FROM Tabelle WHERE cID=" . $ID . " AND cPW=" . md5($PW);
    12. $db_erg = mysqli_query( $db_link, $sql );
    13. if ( ! $db_erg )
    14. {
    15. die('Ungültige Abfrage: ' . mysqli_error());
    16. }
    17. echo '<table border="1">';
    18. while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
    19. {
    20. echo "<tr>";
    21. echo "<td>". $zeile['cVorname'] . "</td>";
    22. echo "<td>". $zeile['cNachname'] . "</td>";
    23. echo "<td>". $zeile['cID'] . "</td>";
    24. echo "<td>". $zeile['cPW'] . "</td>";
    25. echo "<td>". $zeile['cEmail'] . "</td>";
    26. echo "<td>". $zeile['cHID'] . "</td>";
    27. echo "<td>". $zeile['kBenutzer_ID'] . "</td>";
    28. echo "</tr>";
    29. }
    30. echo "</table>";
    31. mysqli_free_result( $db_erg );
    32. ?>



    Ohne die md5() Funktion funktioniert das ganze, mit allerdings nicht :/.. Anscheinend verknüpfe ich den String nicht richtig oder so :O!
    EDIT: md5() funktioniert richtig, hab mir das mal gerade einzelnd ausgeben lassen, dann liegts doch am Befehlsstring.
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Bitte informiere dich um Sicherheitslücken durch SQL Injection und wie sie zu verhindern sind!

    Was ist die genaue Meldung? Wie sieht das SQL aus, wenn du es mal dumpst? Generell würde ich zur Verwendung von Backticks und Literalen raten, damit entgeht man auch Schlüsselwortkonflikten. Sprich

    SQL-Abfrage

    1. SELECT * FROM `tabelle` WHERE `spalte`='string'
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Das sieht jetzt so aus und es kommt die Meldung die Anfrage ist ungültig:

    SQL-Abfrage

    1. $sql = "SELECT * FROM `LGT_Benutzer` WHERE `cLogin_ID`=" . `$ID` . " AND `cLogin_PW`=" . `md5($PW)`;


    und das

    PHP-Quellcode

    1. die('Ungültige Abfrage: ' . mysqli_error());
    gibt nur das vorgeschriebene aus, von mysqli_error() kommt anscheinend gar nichts Oo?
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..