Controle of tables bestaan
Code (php)
1
2
3
2
3
$tableleden = mysqli_query($connect, "show tables like 'leden'");
$tablelidmaatschap = mysqli_query($connect, "show tables like 'lidmaatschap'");
if ($tableleden && $tablelidmaatschap === true)
$tablelidmaatschap = mysqli_query($connect, "show tables like 'lidmaatschap'");
if ($tableleden && $tablelidmaatschap === true)
of variatie op bovenstaande > 0
en nog een aantal verschillende echter werkt alleen:
Code (php)
1
2
2
$pTableExist = mysqli_query($connect, "show tables like 'lidmaatschap'");
if ($rTableExist = mysqli_fetch_array($pTableExist)) {
if ($rTableExist = mysqli_fetch_array($pTableExist)) {
Het probleem is dat ik dan alleen maar 1 table kan invoeren. Hoe los ik dit op?
En als dit al onderdeel is van een installatieroutine :p zou ik hier CREATE TABLE IF NOT EXISTS <tabelnaam> van maken, zodat, als je de installatieroutine draait dit "non obtrusive" is (of hoe je het ook wilt noemen). En als dat faalt, moet de routine eigenlijk gewoon stoppen / genadeloos op zijn bek gaan.
2. Ik heb een db.php die de tables aanmaakt, is er een mogelijkheid om die te gebruiken?
bv: if not exists execute db.php else..........
Of als het om een installatie-pakket gaat, dan moet Thomas zijn oplossing zeker voldoen.
https://stackoverflow.com/questions/5609620/show-tables-statement-with-multiple-like-values
deze query in elkaar gezet :
Code (php)
1
2
3
2
3
show tables from mijnDB
where Tables_in_mijnDB like 'leden'
or Tables_in_mijnDB like 'lidmaatschap';
where Tables_in_mijnDB like 'leden'
or Tables_in_mijnDB like 'lidmaatschap';
mijnDB is de db waarin de tables voorkomen
Gewijzigd op 02/11/2017 22:56:26 door Adoptive Solution
Een tijd geleden kwam er ook al een soortgelijke vraag voorbij waarin iemand continu wilde controleren of er een databaseverbinding was. Dit terwijl een script slechts enkele milliseconden bestaat waarin een connectie actief is.
Punt is, je moet denk ik af van de situatie waarin het ter discussie staat of de tabellen bestaan. Zorg dat je dit op een of andere manier garandeert, of er simpelweg vanuit gaat.
Dit is zoiets als elke seconde op de klok kijken om te zien of deze wel daadwerkelijk een seconde vooruit gaat.
Overigens, een LIKE zonder wildcards is nogal suf? Doe dan iets als WHERE <kolom voor tabelnamen> IN ('tabelnaam1', 'tabelnaam2') ofzo, maar dan nog, je moet waarschijnlijk af van deze maffe controle :p.
Als de tabellen niet bestaan, moet u ook het formulier niet tonen. Er kan immers toch niets worden opgevoerd.
Dus ik zat bij het html gedeelte te denken aan een if else waarin staat: if als ze bestaan show het formulier, else een melding dat het nog niet bestaat.
En deze oplossing, is dat mogelijk?
Ik heb een db.php die de tables aanmaakt, is er een mogelijkheid om die te gebruiken?
bv: if not exists execute db.php else..........
Het lijkt mij beter dat de formulierfunctionaliteit er gewoon van uitgaat dat deze tabel bestaat. Je zou indirect kunnen afhandelen dat deze niet bestaat wanneer je informatie naar een niet-bestaande tabel probeert weg te schrijven (de query mislukt dan, toon gebruiksvriendelijke boodschap, log of mail de error voor de desbetreffende slapende programmeur).
Tenzij er meer informatie gegeven wordt waaruit blijkt dat het controleren op het bestaan van een tabel zinnig is zou ik gewoon de kanttekening plaatsen dat een controle hierop in code voor formulierfunctionaliteit niet de juiste plaats is.
Ik zou ook niet doen alsof deze opdrachten in steen gezet zijn, te meer wanneer er onzinnige dingen van jou verlangd worden. Mogelijk wordt dit gedaan om te kijken hoe je dit programmatisch aanpakt, maar dit schiet zijn doel een beetje voorbij als je hiermee een verkeerde manier van programmeren aanleert :p.