Inner Join problem

Tags:    php inner join mysql

Jeg har lidt problemer med et få en Inner Join til at fungere.

Fold kodeboks ind/udKode 


Jeg vil gerne hente en liste ud hvor den skriver listen med oplysninger fra min tabel beskeder - og det fungere jo fint. Men jeg kan ikke få den til at hente/ skrive "brugernavn" fra tabellen "beskeder".
Hvad er det jeg mangler?



6 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
måske:

SELECT beskeder.id, beskeder.modt, beskeder.afs, beskeder.emne, beskeder.sendt, bruger.brugernavn
FROM bruger
INNER JOIN beskeder ON bruger.id = beskeder.modt
WHERE beskeder.modt = '".mysql_real_escape_string($_SESSION['B_id'])."' LIMIT 5

<? echo "$row['brugernavn']"?>

ellers må du lige lave et sql dump af dine 2 tabeller (beskeder og bruger) , gerne fake data, og begræns til ca 5 poster


@mysql_fetch_array($query)

fjern @, det undertrykker evt beskeder
i stedet for mysql_fetch_array bør du nok bruge mysql_fetch_assoc, med mindre du også anvender det numeriske array
http://php.net/manual/en/function.mysql-fetch-array.php


ps: du skyder dig selv i foden ved forsat at anvende det gamle mysql API, brug mysqli eller PDO.
det gamle API er fjernet i PHP7 som blev frigiveet 2015-12-03
jeg ved de forskellige webhoteller (unoeuro, meebox) allerede tilbyder PHP7, så det er et spørgsmål om tid før du får det tilbudt, og senere påtvunget




Jeg er faktisk også skiftet til mysqli - men bruger stadig lidt af det andet nogle steder.

Hvis jeg bruger bruger.brugernavn - så henter den bare brugernavnet på den som står som beskeder.modt






Jeg er faktisk også skiftet til mysqli - men bruger stadig lidt af det andet nogle steder.

få det rettet de andre steder, det kan kun gå for langsomt, hvis du spørger mig,



Hvis jeg bruger bruger.brugernavn - så henter den bare brugernavnet på den som står som beskeder.modt

jeg er nødt til at se tabellerne så, med noget data, lav et sql dump (export i phpmyadmin) som tidligere skrevet

lav gerne et eks, på hvad du forvendter på en given besked, ud fra de data du dumper




En del af problemet var at jeg havde to felter med samme navn.
Nu virker denne (næsten)

Fold kodeboks ind/udKode 


Men jeg skal så haveden til at skrive brugernavn (bruger) i stedet for afsender id (beskeder)




Indlæg senest redigeret d. 26.01.2016 13:55 af Bruger #17644
du kan give dine id'er et alias (AS), hvilke man kan være tvunget til at gøre ved navne samenfald

$sql = "
SELECT beskeder.sendt, beskeder.id AS beskeder_id, beskeder.afs, beskeder.afsn, beskeder.modt, beskeder.emne, bruger.brugernavn, bruger.id AS bruger_id, beskeder.laest
FROM bruger
INNER JOIN beskeder ON bruger.id = beskeder.modt
WHERE beskeder.modt = '".mysqli_real_escape_string($mysqli, $_SESSION['B_id'])."' ORDER by sendt DESC
";



mysql_real_escape_string($_SESSION['B_id'])
skal være
mysqli_real_escape_string($mysqli, $_SESSION['B_id'])
http://php.net/manual/en/mysqli.real-escape-string.php




Ok - tak

Men hvordan får jeg den til at skriver det brugernavn som hører til det id som beskeder.afs skriver?

Altså jeg har afsender med id 15

Så skal den tage det brugernavn i tabellen bruger som hører til id 15



t