Onderstaande code ben ik al een behoorlijk tijdje aan het bekijken.
Beide tabellen hebben een veld genaamd "id", maar nu wil ik dus van beide velden het id op de pagina laten tonen.

Welke manier kan ik het beste uitvoeren zonder dat ik de tabel aan moet passen?

P.s.: niet te vergeten dat ik heel veel zal moeten leren betreft MySQL querys.

Alvast bedankt!

<?php

$dataquery = mysqli_query($connect_mysql, "SELECT * FROM `users` INNER JOIN `user_settings` as us ON (users.id = us.user_id) WHERE `setting_id` = 'PROFPIC' ORDER BY users.id desc");
while($data = mysqli_fetch_array($dataquery))
{
// hier wil ik dus de info van user_settings -> id zien
// De query is nu natuurlijk niet correct.
// dit is sowieso niet goed:
$prof = $data['us.id'];
// Deze wordt ook niet geaccepteerd
$prof =  $data->us->id;
print $prof;
}

?>
Noem alle velden los in de SELECT, en gebruik geen *

Een aantal enters in je query maakt het geheel ook een stuk overzichtelijker.
- Ariën - op 01/07/2020 21:09:11

...


Dus als ik het goed begrijp is het bijvoorbeeld:


SELECT `id`, `naam`, `achternaam` FROM `users` INNER JOIN `user_settings` ON (users.id = user_settings.user_id)

Maar hoe krijg ik dan van de user_settings de id te pakken?
user_settings.id in je SELECT.
- Ariën - op 01/07/2020 21:14:16

..


Dus als ik het goed begrijp is het dan zo:


SELECT `users.id`, `user_settings.id`, `naam`, `achternaam` FROM `users` INNER JOIN `user_settings` ON (users.id = user_settings.user_id)

print $data['id'] <- als ik daar de user settings id of de users id wil tonen, wat moet ik er dan aan aanpassen?
Dan kan je beter een AS alias gebruiken:

SELECT user_settings.id AS settingID, bla, blah....
Thanks Ariën,

Dan ga ik morgen even kijken of het middels de alias werkt :-)
Nog mooier is een alias koppelen aan een tabelnaam:


SELECT us.id AS settingID, bla, blah.... 
FROM users u
INNER JOIN user_settings us ON (users.id = user_settings.user_id)


Scheelt je een hoop lange tabelnamen als je je lange tabelnamen hebt.

- Ariën - op 01/07/2020 23:24:40

..



Ik krijg de volgende error:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in public_html/4-newsite/includes/newestusers.php on line 23


dit is hetgene wat ik hem uit laat voeren:


$dataquery = mysqli_query($connect_mysql, "
	SELECT 

		users.id AS 'uid', 
		users.voornaam AS 'uv', 
		users.achternaam AS 'ua',  
		users.username AS 'uname', 
		us.value AS 'picture', 
		st.value AS 'top'
	FROM `users` 
		INNER JOIN 

			`user_settings` as us ON (users.id = us.user_id) WHERE `setting_id` = 'PROFPIC' 
		INNER JOIN 

			`user_settings` as st ON (users.id = st.user_id) WHERE `setting_id` = 'PROFPIC_TOP'
		ORDER BY users.id desc");



Vraag me af wat ik hier fout doe, als ik één INNER JOIN verwijder doet hij het wel.

[size=xsmall]Toevoeging op 03/07/2020 20:34:37:[/size]

Heb hem inmiddels gevonden, in plaats van WHERE moest ik AND gebruiken en ik moest st.setting_id gebruiken.
Als je die bovenste foutmelding ziet, dat betekent dat in feite dat je geen goede foutafhandeling hebt. ;-)
- Ariën - op 03/07/2020 21:15:40
Als je die bovenste foutmelding ziet, dat betekent dat in feite dat je geen goede foutafhandeling hebt. ;-)

Mja, maar dit is het gevolg van een syntactisch incorrecte query. Het is dus niet zozeer het probleem dat de code / databaselaag geen foutafhandeling zou hebben. Indien de query wel zou kloppen -en deze is verder compleet statisch / heeft geen enkel dynamisch deel- dan zou het eigenlijk niet uitmaken of je een foutmeldingslaag hebt of niet.

Neemt niet weg dat het voor een productie-omgeving netter zou zijn dat je wat extra "stootkussens" hebt in de vorm van foutafhandeling, en dan bij voorkeur een variant waarbij de gebruiker een nette foutmeldingspagina krijgt indien er iets misgaat - wellicht met HTTP status code 500 (internal server error), in plaats van rauwe foutmeldingen op het scherm, die op een productie-omgeving eigenlijk altijd uit zouden moeten staan (de weergave, niet de registratie).

Ook is het belangrijk dat je de foutmeldingen echt leert lezen/interpreteren. Als je dit kunt ben je namelijk al halverwege met het oplossen van het achterliggende probleem.

Reageren