Functie voor MySQL database

Status
Niet open voor verdere reacties.

georgeboot

Gebruiker
Lid geworden
3 jan 2007
Berichten
70
Hallo forum-ers,

ik heb een functie gemaakt voor het ophalen van gegevens uit een database. Alleen gaat er iets fout, alleen zie ik na lang zoeken niet wat..:eek::(

MIjn script:
PHP:
<?php

// Functie voor het ophalen van gegevens uit de database
function getDB($sql, $type) {
	
	/* ---------------------------------*/
	/*      Type 1 => Assoc				*/
	/*		Type 2 => Array				*/
	/* -------------------------------- */
	
	// databasebestanden includen
	include("connection.php");

	// verbinding maken en database selecteren
	$verbinding = mysql_connect($host, $user, $pass) or die (mysql_error());
	mysql_select_db($data) or die (mysql_error());
	
	// query uitvoeren en in een resultaatset teruggeven
	$resultaat = mysql_query($sql) or die (mysql_error());
	
	// verbinding sluiten
	mysql_close($verbinding) or die (mysql_error());
	
	// resultaat bewerken en returnen
	if ($type = 1) {
		$bewerkt = mysql_fetch_assoc($resultaat) or die (mysql_error());
	} elseif ($type = 2) {
		$bewerkt = mysql_fetch_array($resultaat) or die (mysql_error());
	} else {
		$bewerkt = $resultaat;
	}
	$sql = $bewerkt;
	return $sql;
	
}
?>

De fout die ik krijg is als volgt:
Code:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /usr/home/deb27179/domains/bobe-multimedia.nl/public_html/mis/_SYSTEM/requires/functions.php on line 26

Iemand die mij alstublieft kan helpen? Alvast bedankt!
 
Als de query klopt, zou het geen fout moeten terug geven, dus welke query probeer je uit te voeren?

Opmerking: als het de bedoeling is dat de functie een array terug geeft: je moet eerst door de resultset loopen, rechtstreeks een array terugkrijgen is niet mogelijk.
 
Haha, ik zie al wat ik fout doe!
De query die ik uitvoerde was de volgende php:
PHP:
$query = "
INSERT INTO `leveringen` (`datum`,`tijd`,`liters`,`boer`,`monster`,`opmerkingen`)
		VALUES ('$_POST[datum]', '$tijd', '$_POST[liters]', '$_POST[boer]', '$_POST[monster]', '$_POST[opmerkingen]')
";
Een INSERT kun je natuurlijk helemaal niet verwerken in een array, dus dat ging er fout.
Nu ik een SELECT doe, gaat het goed!

Bedankt!
 
Ik vraag mij af waarom je een resultaat als "array" terug wilt geven en niet gewoon altijd als "assoc".

assoc is veel efficiënter omdat je niet een dubbele array krijgt (Zowel met nummers als key, als de veld-naam)

Verder zou je dan 2 functies moeten maken, een "get"-functie welke alleen resultaten teruggeeft (Enkel bedoeld voor SELECT-queries) en een "execute"-functie welke alleen uitvoert (INSERT, UPDATE, DELETE)

Zo is meteen met functie-aanroep duidelijk wat er gaat gebeuren :)
 
Dank voor de reactie!!

Ik werk zelf altijd met Assoc. Wat array voor extra waarden had (heeft het dus niet hoor ik ;)) wist ik niet. Ik heb hem er maar gewoon bij gezet..

De aparte functie voor het uitvoeren van bijvoorbeeld update's heb ik gemaakt. Het was inderdaad een goed idee ja.

Hartelijk bedankt!:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan