Avatar billede neocron Nybegynder
24. juli 2007 - 14:58 Der er 6 kommentarer og
1 løsning

PHP driller min MySQL

Hejsa,
Et spørgsmål - selve kommandoen er nu ikke så mystisk igen, men det som tværtimod ER mystisk er hvordan denne kommando opfører sig i hhv. MySQL og PHP.

Query'en er udformet på flg. måde:

SELECT a, b, c... FROM minTabel WHERE id = 13

Hvis denne udføres i MySQL får jeg alle mine resultater smidt direkte tilbage i nakken - fuldstændig som jeg skal.

MEN - hvis jeg prøver at køre den i PHP får jeg intet smidt ind i mit array, som f.eks.:

function hentSQLdata() {
    $array = array();
    $query = mysql_query("Queryen ovenover") or die(mysql_error())
    while($temp = mysql_fetch_array($query)) {
        $array[] = $temp;
    }
    return $array;
}

Så langt så godt. Nu burde jeg kunne hente de enkelte ting ud af array'et men hvis jeg prøver at lave et tjek på hvor stort mit array er, viser den 0:

$cnt = count($class->hentSQLdata());
echo $cnt; // 0

Det sjove er.. jeg har en anden funktion som skal gøre præcis det samme men UNDLADE id'ere som = 13 og den virker FINT -

SELECT a, b, c, ... FROM minTabel WHERE id <> 13

Den virker FINT, men min først virker IKKE. Og den eneste forskel overhovedet på de 2 queries er "= 13" og "<> 13".. og begge kommandoer virker 110% hvis jeg udfører dem i en MySQL> prompt.

Det er altså KUN i PHP at problemet opstår.
Koden på de 2 forskellige sider der behandler de 2 funktioner er fuldstændig identisk bortset fra at funktionsnavnet naturligvis er rettet til :)

Jeg er bange for at jeg har set mig fuldstændig blind i dette, så jeg håber at I kan hjælpe.
Avatar billede erikjacobsen Ekspert
24. juli 2007 - 15:09 #1
Forskellige databaser/tabeller?? ... hvor een af dem ikke indeholder noget for id=13 ??
Avatar billede erikjacobsen Ekspert
24. juli 2007 - 15:20 #2
Iøvrigt er der vist ingen der er specielt glade for, når man ikke skriver den helt præcise kode, der går galt. Der står fx ikke "Queryen ovenover" i din konkrete funktion. Så hvad står der egentlig - helt præcist?
Avatar billede neocron Nybegynder
24. juli 2007 - 15:40 #3
Forskellige tabeller, de ligger under samme database.. og ja, jeg ved udmærket godt at det ikke er den eksakte kode ovenover, det var mere en forglemmelse da jeg tastede det ind.

Virker:
$query = mysql_query("select id, status, start, last_change, owner, category, queue, severity, subject from eventlist where status <> 13");

Virker ikke:
$query = mysql_query("select id, status, start, last_change, owner, category, queue, severity, subject from eventlist where status = 13");

Der er ingen "fejl" som sådan, ihvertfald ikke nogen som bliver fanget af mysql_error().

Og funktionen (her med den queuy som ikke rigtig trækker noget selvom den burde.
Hvis man benytter den anden query her, trækker den fint data.

function hentSQLdata() {
    $a = array();
    $query = mysql_query("select id, status, start, last_change, owner, category, queue, severity, subject from eventlist where status = 13");
    while($tmp = mysql_fetch_array($query)) {
        $a[] = $tmp;
    }
}
Avatar billede erikjacobsen Ekspert
24. juli 2007 - 15:48 #4
Du har ikke nogen return $a; ?  Altså: vis lige den kode der bruges.
Avatar billede neocron Nybegynder
24. juli 2007 - 16:22 #5
HAHAHA jeg sagde jo jeg havde stirret mig blind i den ;o)
Så simpelt... og alligevel så svært. Vil du være sød at smide et svar?
Avatar billede erikjacobsen Ekspert
24. juli 2007 - 16:33 #6
Nå, det var koden .... !  Der kan du se: vis den rigtige kode med samme, Ctrl-C, Ctrl-V.
Men jeg samler slet ikke på point, tak. Svar selv, accepter eget svar.
Avatar billede neocron Nybegynder
24. juli 2007 - 16:55 #7
Ok, du .. tak for det :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester