PHP / SQL abfrage problem ...

  • Moin leute hab ein problem
    ich will den Account namen und den Account rang aus der "ACCOUNT_TBL_DETAIL" (von flyff) auslesen hab dazu vollgendes skript geschriben!


    Code
    $mssql = mssql_connect(MSSQL_DSN, MSSQL_USER, MSSQL_PASS) or die($lang['error']);
                    @mssql_query($mssql, 'USE [ACCOUNT_DBF]');
                    $select1 = @mssql_query($mssql, 'SELECT account FROM [ACCOUNT_DBF].[dbo].[ACCOUNT_TBL_DETAIL] WHERE account =\''.$user.'\'');
                    $select2 = @mssql_query($mssql, 'SELECT * FROM [ACCOUNT_DBF].[dbo].[ACCOUNT_TBL_DETAIL] WHERE [account] =\''.$user.'\'');
                    echo 'Account: '.$select1['account'].'<br>';
                    echo 'Rechte: '.$select2['m_chLoginAuthority'].'<br>';

    Ich weis nicht mehr weiter, er schreibt nur die echos hin aber nicht das was er eigendlich abfragt!

    Bitte um schnele hilfe!

    Lg, Demon

    [CENTER]
    [/CENTER]

  • Sollen wir dir vielleicht noch ein wenig mehr vorkauen? Er hat die doch geschrieben was du machen musst. Also mach es auch......

  • Zitat von ulle;261550

    Sollen wir dir vielleicht noch ein wenig mehr vorkauen? Er hat die doch geschrieben was du machen musst. Also mach es auch......



    Es funktionirt aber nicht -.- deswegen wolte ich den code mal so sehen wie er es meinte!

    [CENTER]
    [/CENTER]

  • PHP
    $mssql = mssql_connect(MSSQL_DSN, MSSQL_USER, MSSQL_PASS) or die($lang['error']);                
    @mssql_query($mssql, 'USE [ACCOUNT_DBF]');                
    $select1 = @mssql_query($mssql, 'SELECT account FROM [ACCOUNT_DBF].[dbo].[ACCOUNT_TBL_DETAIL] WHERE account =\''.$user.'\'');                
     $select2 = @mssql_query($mssql, 'SELECT * FROM [ACCOUNT_DBF].[dbo].[ACCOUNT_TBL_DETAIL] WHERE [account] =\''.$user.'\'');                 
    $blubb1 = mssql_fetch_assoc($select1);
    $blubb2 = mssql_fetch_assoc($select2);
    echo 'Account: '.$blubb1['account'].'<br>';                 
    echo 'Rechte: '.$blubb2['m_chLoginAuthority'].'<br>';

    Probier mal das. Ansonsten mssql_fetch_array (?)

    Zitat von luia;241404

    aber das neavo von graphfruit kennen wir ja alle....


    [CENTER][COLOR=deepskyblue]Made my LiFE ;D[/COLOR]
    [/CENTER]

  • Bei "mssql_fetch_assoc"

    kommt der error

    Zitat


    Warning: mssql_fetch_assoc() expects parameter 1 to be resource, null given in C:\xampp\htdocs\neu\index.php on line 189
    Warning: mssql_fetch_assoc() expects parameter 1 to be resource, null given in C:\xampp\htdocs\neu\index.php on line 190
    Account:
    Rechte:

    und bei "mssql_fetch_array" der

    Zitat


    Warning: mssql_fetch_array() expects parameter 1 to be resource, null given in C:\xampp\htdocs\neu\index.php on line 189
    Warning: mssql_fetch_array() expects parameter 1 to be resource, null given in C:\xampp\htdocs\neu\index.php on line 190
    Account:

    [CENTER]
    [/CENTER]

  • Das ist doch nicht so schwer. Die Fehlermeldung sagt aus, dass der erste Parameter eine Resource sein muss, aber NULL übergeben wurde. Da wir den Inhalt von $select1 bzw. $select2 übergeben, heißt das, dass diese Variablen schon den "Wert" NULL beinhalten. Nun liegt es an dir, als Entwickler, zu prüfen, wieso die Variablen eine NULL beinhalten anstelle eine Resource. Dafür ist es natürlich notwendig, den Code auch zu verstehen.
    Woher kommt der Wert der Variablen? Richtig, es ist der Rückgabewert von mssql_query(). Was tun wir also? Richtig, wir schauen uns die Doku über mssql_query() an: PHP: mssql_query - Manual

    Wenn wir nun den Abschnitt "Rückgabewert" betrachten, fällt uns auf, dass die Funktion eine Resource, TRUE oder FALSE zurückgeben kann. Zugegeben, ich weiß nicht, wieso trotzdem NULL zurückgeben wird, aber ich würde an dieser Stelle einfach vermuten, dass da trotzdem etwas nicht stimmt. Merken wir also: Wenn mssql_query() keine Resource zurück gibt, stimmt etwas nicht. Das heißt also, dass du im Code auch prüfen solltest, ob wirklich eine Resource zurückgegeben wird; andernfalls solltest du den Fehler auch sichtbar machen. Aber gut, zu deinem Problem: Irgendetwas stimmt mit mssql_query() also nicht.

    Gehen wir hoch zur "Beschreibung", fällt noch etwas auf.

    Zitat

    mixed mssql_query ( string $query [, resource $link_identifier [, int $batch_size = 0 ]] )

    Zitat

    $select1 = @mssql_query($mssql, 'SELECT account FROM [ACCOUNT_DBF].[dbo].[ACCOUNT_TBL_DETAIL] WHERE account =\''.$user.'\'');


    Hm? Laut der Beschreibung muss zuerst das Query übergeben werden und erst dann die Verbindungskennung; du vertauscht das aber. Ob da der Fehler liegen könnte? Genau. :)
    Jetzt bleibt aber noch die finale Frage: Wieso gibt ein so kritischer Fehler keine Fehlermeldung? Hier wird schließlich ein String anstelle einer Resource übergeben, d.h. das ganze sollte auch in einer entsprechenden Fehlermeldung resultieren. Würde es im Grunde auch, doch diese Fehlermeldung unterdrückst du mit dem "@" Operator. Deshalb bleibt noch eine Frage übrig, die nur du beantworten kannst: Wieso steht der denn da überhaupt?

  • Kann geschlossen werden hab es nun mit der hilfe von stefan geschaft!
    Danke noch mal stefan =)

    Also bitte hier schlißen...

    lg,
    Demon

    [CENTER]
    [/CENTER]

  • Mich würde aber noch immer interessieren, was du dir bei dem "@"-Operator gedacht hast. (Nur, damit keine Anfänger auf dieses Thema stoßen und den Quelltext zum "Lernen" verwenden)

  • Zitat von Well;261740

    Mich würde aber noch immer interessieren, was du dir bei dem "@"-Operator gedacht hast. (Nur, damit keine Anfänger auf dieses Thema stoßen und den Quelltext zum "Lernen" verwenden)



    mit @ kommen keine error und alls ich das @ davor gesetzt habe hab ich gedacht die errors wären weg und nicht das sie einfach nur hausgeblendert wurden bin noch nicht so die leuchte in sql ^^

    [CENTER]
    [/CENTER]

  • ich würd dir einfach empfehlen, zu lesen, was dir hingeworfen wird.
    Sei es ein fehler oder ein tutorial.
    Bei Guides ist es tödlich, einfach den Code zu kopieren ohne ihn zu kapieren.
    Und statt dem @ gibts eine bessere Methode, die man auch nutzen könnte: die()
    Die sorgt bei so manchem Einsatzzweck noch dafür, dass das Script nicht woanders nen Fehler hervorrufen kann,

  • Zitat von internetfreak;261763

    ich würd dir einfach empfehlen, zu lesen, was dir hingeworfen wird.
    Sei es ein fehler oder ein tutorial.
    Bei Guides ist es tödlich, einfach den Code zu kopieren ohne ihn zu kapieren.
    Und statt dem @ gibts eine bessere Methode, die man auch nutzen könnte: die()
    Die sorgt bei so manchem Einsatzzweck noch dafür, dass das Script nicht woanders nen Fehler hervorrufen kann,

    Ich habe ja nix kopirt ich habe es mir so zusamen gebaut wie meine kentnise zu sql zu dem zeit punkt waren ich wurde eines besseren belert und damit solte doch jetzt auch gut sein und es kann jetzt endlich geschlosen werden !

    [CENTER]
    [/CENTER]

  • Es wird nix geschlossen, da ich kein Mod mehr bin und sich hoffentlich auch kein SMod darum kümmern wird.
    Wenn ich Mod wäre, würde ich Closerequests zumeist ignorieren, soviel sei gesagt.
    Und das aus einem einfachen Grund: Wird etwas geschlossen, so muss der nächste, der das Problem auch hat, nen neuen Thread eröffnen. -> Führt irgendwann zu nem Chaos

  • Zitat von internetfreak;261771

    Es wird nix geschlossen, da ich kein Mod mehr bin und sich hoffentlich auch kein SMod darum kümmern wird.
    Wenn ich Mod wäre, würde ich Closerequests zumeist ignorieren, soviel sei gesagt.
    Und das aus einem einfachen Grund: Wird etwas geschlossen, so muss der nächste, der das Problem auch hat, nen neuen Thread eröffnen. -> Führt irgendwann zu nem Chaos



    Da ich der ersteller bin kann der theme auf meien wunsch geschlosen werden kenns du eigendlich die regeln du warst doch lange genung mod ich war nur 3 monate mod und kenn emich besser aus als du?

    [CENTER]
    [/CENTER]

  • Mal so btw: das ist kein SQL sondern PHP... Du arbeitest nur mit der MSSQL API für PHP.
    Nur innerhalb der 'query'-Funktion verwendest du SQL Befehle :P

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!