Where Clause con Array in PHP

Una delle più belle funzioni dei DB relazionali è senz’altro la “Where Clause”.

Però nei database di testo purtroppo non è presente ☹️

Ecco una funzione che serve per trovare da un array multidimensionale dei suoi valori o delle sue chiavi (ovvero ‘values’ o ‘key’ nel parametro $what) dicendo che valore ($value) si vuole trovare per quale chiave ($key).

È possibile limitare la ricerca a un numero di valori o a tutti i valori specificandola in $num.

La rilascio in pubblico dominio, ovvero potete farne quello che volete!

function whereClause($array, $key, $value, $num=-1, $what='values') {
	if(!is_array($array) || count($array)==0) return false;
	$r=array();
	$i=0;
	foreach($array as $k=>$v) {
		# TODO: Just equal?
		if($v[$key]==$value) {
			$r[]=($what=='keys') ? $k : $v;
			$i++;
			if($i>=$num && $num>0) break;
		}
	}
	return $r;
}

La mancanza di MySQL

Mi stavo chiedendo se gli script Mysql (o con altri DBRMS) facessero di più al caso mio.

In realtà no perché ci sono troppi script mysql che vanno per il conto loro, e non potrei metterli insieme come ho fatto per questo sito.

Sinceramente anche Dokuwiki ha la sua pesantezza (infatti molte volte si vede un errore 501 dal server).

Solamente i forum ho faticato a trovarli…

Io però non uso mysql perché questo sito non ha un traffico elevato (come persone, perché di banda ho 10giga), e neanche tante visite uniche.

Sinceramente non mi piacciono neanche i db di testo che sono tipo db razionali come Gladius o txtDb.

Io per un po’ ho usato appunto questi db, ma Gladius è pesante durante l’elaborazione, e l’sql se lo devo scrivere io diventa scomodo, quindi userei txtDb, ma se lo dovessi usare con altri script… Peccato che molti abbiano solo MySQL o non usino lo standard che è l’sql92.

TxtDb invece mi è parso che ha certe funzioni di select utili, ma il codice è molto insicuro, infatti viene usato tipo l’eval.

Entrambi questi db usano la funzione serialize che sto usando anch’io per i miei script, ma io utilizzo variabili passate come referenze, che sono molto più comode perché scrivere direttamente in php ha un suo pregio, e mi basta poi dare dalla classe un SaveTable o SaveAllTables e tutti i dati sono ok.

Se avessi un db penso userei Joomla, che mi pare si possa integrare bene, infatti io non voglio iframe e robe simili.

La userei con gladius se si potesse, ma purtroppo no.

In realtà il db ce lo ho, ma solo da 300queries/ora.