Archief - PHP: Deleten van een rij in een mysql db

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

stoffer

Legacy Member
Tabel cmerk met daarin:
id - merknl - merkfr

Code:
//Er is reeds connectie met de database, maar die code hier pasten is zinloos want die klopt
	$waarde = "merk".$detaal;
	if (! $wijzig) {
		mysql_query("DELETE FROM cmerk WHERE $waarde=$merk");
		mysql_close();
		echo "$waarde - $merk";
	}

$waarde is dus ofwel merknl ofwel merkfr en dat klopt (zie ik bij die echo)
$merk is ook altijd juist
Toch wordt er nooit iets gedelete, waar zit de fout? (Als ik ipv $waarde gewoon merknl of merkfr gebruik werkt het ook niet)

DarkBone

Legacy Member
mysql_query("DELETE FROM cmerk WHERE $waarde='$merk'")
or die("Fout: " . mysql_query());

stoffer

Legacy Member
DarkBone zei:
mysql_query("DELETE FROM cmerk WHERE $waarde='$merk'")
or die("Fout: " . mysql_query());

Ik krijg deze foutmeldingen:
Code:
Warning: mysql_query(): Access denied for user: 'ODBC@localhost' (Using password: NO) in ...
Warning: mysql_query(): A link to the server could not be established in ... on line 17

Warning: Wrong parameter count for mysql_query() in ... on line 17
Fout:

Maar mijn code is alsvolgt:
Code:
//Connecteren van de server
$db = mysql_pconnect("localhost", "geo","password");
//De database selecteren
mysql_select_db("dedatabase",$db);

De gegevens uit de tabel lezen lukt, maar deleten blijkbaar niet?
En voor wat staat ODBC@localhost want ik connect nergens onder dergelijke naam.

killgore

Legacy Member
pconnect, why the fuck heb jij een persistente connectie nodig??? (en dan roep je nog eens mysql_close aan ook :ironic: )

gewoon mysql_connect volstaat hoor :).

en aangezien ik denk dat die $wijzig global is: $_GET['wijzig'] of $_POST['wijzig'] zal je moeten hebben.

stoffer

Legacy Member
killgore zei:
pconnect, why the fuck heb jij een persistente connectie nodig??? (en dan roep je nog eens mysql_close aan ook :ironic: )

gewoon mysql_connect volstaat hoor :).

en aangezien ik denk dat die $wijzig global is: $_GET['wijzig'] of $_POST['wijzig'] zal je moeten hebben.

Die pconnect staat er nog omwille van mijn vorig project, een forum is nu eenmaal beter met pconnect. (Bepaalde bestanden copieer ik gewoon en schrijf ik nu eenmaal niet opnieuw)
Die Get en Post zijn voor niks nodig, wijzig is gewoon een variabele die al dan niet bestaat en heeft geen invloed op het al dan niet werken van die delete.
(De code die ik eronder staan heb om die rij te wijzigen werkt wel perfect)

Ondertussen werkt het reeds, ik gebruik nu id ipv de merknaam

|t3st

Legacy Member
DarkBone zei:
mysql_query("DELETE FROM cmerk WHERE $waarde='$merk'")
or die("Fout: " . mysql_query());

was het niet die("fout: ".mysql_error()); ??

greetz Sluttie

DarkBone

Legacy Member
|t3st zei:
was het niet die("fout: ".mysql_error()); ??

greetz Sluttie

Haha goed gezien, ik was net uit mijn bed :P
(wat geen leugen is, maar 't is een flauw excuus ;))

Dat verklaart ook meteen uw foutmeldingen stoffer, probeer nog es met mysql_error().

stoffer

Legacy Member
DarkBone zei:
Haha goed gezien, ik was net uit mijn bed :P
(wat geen leugen is, maar 't is een flauw excuus ;))

Dat verklaart ook meteen uw foutmeldingen stoffer, probeer nog es met mysql_error().

Het werkt ondertussen al :p

killgore

Legacy Member
stoffer zei:
Die pconnect staat er nog omwille van mijn vorig project, een forum is nu eenmaal beter met pconnect. (Bepaalde bestanden copieer ik gewoon en schrijf ik nu eenmaal niet opnieuw)

????

Wtf bedoel je hiermee???

stoffer

Legacy Member
killgore zei:
????

Wtf bedoel je hiermee???

Vorig project was een forum dat ik heb geschreven, volgens mij is pconnect dan toch heel wat handiger.
Het connecteren naar die database verloopt gewoon via een php fileke
Als ik nu een nieuw project maak copieer ik gewoon dat php fileke ipv alles opnieuw te typen, hierdoor bleef de p staan.

killgore

Legacy Member
stoffer zei:
Vorig project was een forum dat ik heb geschreven, volgens mij is pconnect dan toch heel wat handiger.
Het connecteren naar die database verloopt gewoon via een php fileke
Als ik nu een nieuw project maak copieer ik gewoon dat php fileke ipv alles opnieuw te typen, hierdoor bleef de p staan.

jij weet precies niet wat pconnect is :)

pconnect maakt een constante connectie met de mysql db, die NIET automatisch afsluit (en ook niet af te sluiten is via mysql_close). Je hebt dus gewoon mysql_connect nodig. Dat gaat ook met zo een fileke ze :).

stoffer

Legacy Member
killgore zei:
jij weet precies niet wat pconnect is :)

pconnect maakt een constante connectie met de mysql db, die NIET automatisch afsluit (en ook niet af te sluiten is via mysql_close). Je hebt dus gewoon mysql_connect nodig. Dat gaat ook met zo een fileke ze :).

:eek:
Als ge een forum maakt is het beter van pconnect te gebruiken.
In dit geval ben ik niet aan een forum bezig en staat die p er teveel.
Maar die p stond er nog omwille van hetgeen ik al 2X postte, namelijk dat ik gewoon mijn php file gecopieerd heb zonder iets te wijzigen.

Vorig project was een forum dat ik heb geschreven, volgens mij is pconnect dan toch heel wat handiger.

stoffer

Legacy Member
Het verschil tussen mysql_connect() en mysql_pconnect() is (naast de ’p’ in de naam) miniem. Wanneer we PHP als een module draaien en mysql_pconnect() gebruiken gaat de connectie bij het afsluiten of bij het beëindigen van de het script niet gesloten worden. De module houdt de verbinding open. Wanneer er later een ander script uitgevoerd wordt dat probeert een verbinding te leggen via mysql_pconnect() of mysql_connect() met dezelfde parameter-waarden gaat de reeds geopende (en bewaarde) connectie gebruikt worden. Dit bespaart de overhead die ontstaat bij het openen en sluiten van connecties. Wanneer de connectie toch lang genoeg niet gebruikt wordt, gaat PHP de connectie uiteindelijk toch dichtgooien.

mysql_pconnect() moet dus gebruikt worden bij sites die binnen een korte tijdspanne regelmatig een connectie leggen naar een bepaalde database met dezelfde username en password. Drukbezochte sites die veel dynamische pagina’s bevatten kunnen dus beter mysql_pconnect() gebruiken. Sites waar er maar enkele hits in een dag komen kunnen echter beter mysql_connect() gebruiken.

Om een connectie af te sluiten kunnen we de functie mysql_close() gebruiken. De enige parameter die nodig is, is de integer die we verkregen hebben hij het openen van de connectie. Wanneer we geen parameter meegeven wordt de laatst geopende connectie afgesloten (ideaal wanneer we maar 1 connectie naar 1 database onderhouden? Nee, denk aan verdere uitbereidingen).
mysql_close() geeft een “true” terug wanneer de afsluiting gelukt is, of een “false” wanneer mysql_close() de connectie niet kon sluiten.
mysql_close() zal nooit een connectie sluiten die met mysql_pconnect() geopend is, maar zal in dat geval wel een “true” teruggeven.

dJeez

Legacy Member
Als dat forum op shared hosting draait kan je beter die pconnects weghalen, voor je hosting provider (gesteld dat die de zaken wat opvolgt) je om meer uitleg komt vragen over hoe het precies komt dat jouw domein met (zo goed als) alle beschikbare MySQL connecties gaat lopen.

stoffer

Legacy Member
dJeez zei:
Als dat forum op shared hosting draait kan je beter die pconnects weghalen, voor je hosting provider (gesteld dat die de zaken wat opvolgt) je om meer uitleg komt vragen over hoe het precies komt dat jouw domein met (zo goed als) alle beschikbare MySQL connecties gaat lopen.

Dat forum liep op een eigen server.
En dat heeft eigenlijk totaal niks met deze topic te maken.

SpoBo

Legacy Member
stoffer zei:
Tabel cmerk met daarin:
id - merknl - merkfr

Code:
//Er is reeds connectie met de database, maar die code hier pasten is zinloos want die klopt
	$waarde = "merk".$detaal;
	if (! $wijzig) {
		mysql_query("DELETE FROM cmerk WHERE $waarde=$merk");
		mysql_close();
		echo "$waarde - $merk";
	}

$waarde is dus ofwel merknl ofwel merkfr en dat klopt (zie ik bij die echo)
$merk is ook altijd juist
Toch wordt er nooit iets gedelete, waar zit de fout? (Als ik ipv $waarde gewoon merknl of merkfr gebruik werkt het ook niet)


moet worden : mysql_query("DELETE FROM cmerk WHERE waarde=$merk");

ipv $waarde .. tenzij er uiteraard $waarde in uw tabel staat ma da lijkt me redelijk straf :D
edit: .. kan ook natuurlijk da ge een var wilt oproepen .. maar misschien hebde derover gezien dunno.
edit2: ah k nm dan :) twas wa veel tekst om allemaal te lezen

stoffer

Legacy Member
SpoBo zei:
moet worden : mysql_query("DELETE FROM cmerk WHERE waarde=$merk");

ipv $waarde .. tenzij er uiteraard $waarde in uw tabel staat ma da lijkt me redelijk straf :D

nenee het moet $waarde zijn hoor: $waarde = "merk".$detaal;

En het is al opgelost :)

killgore

Legacy Member
aangezien je nog altijd niet geloofd dat pconnect in 99% van de gevallen slecht is, nog eens al het slechte op een rijtje:

pconnect vereist veel meer overhead (elk subproces van apache neemt overhead in voor pconnect in stand te houden, wat redelijk veel kan zijn).
-pconnect zal je veel sneller aan je max. connections helpen, daar ze bij een script heel het script lang (vanaf nog maar de aanroep in apache) openstaat, mysql_connect en mysql_close gebruiken kan deze openings duur veeeeel korter maken waardoor je veel minder snel aan je max. connections komt.

Wanneer kan je ze dan wel gebruiken?
-als je extreem veel overhead hebt en extreem veel max.connections, en je de server niet deelt, dus bv. op je localhost (hoewel ik betwijfel dat je daar een pconnect nodig hebt).
-Als je een trage verbinding tot stand moet brengen, zoals bij lycos of zo, maar ik betwijfel dat die daar mee gaan kunnen lachen.

En jouw argument dat pconnect beter is voor fora. Waarom gebruiken iboard en phpbb (kzal ook is na code van vbulletin zien) geen pconnect, nie omda ze noobs zijn hoor, omdat ze weten dat mysql_connect beter is en zeker bij deftig gebruik.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan