Extra MySQL functies

Door , 14 jaar geleden, 3.075x bekeken

Het spreekt voor zich...


Weet je nog en leuke functie??
pm even of plaats een reactie, dan voeg ik hem toe

Gesponsorde koppelingen

PHP script bestanden

  1. extra-mysql-functies

 

Er zijn 13 reacties op 'Extra mysql functies'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jochem
Jochem
13 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
//check if a query has results
function mysql_results_empty($query){
    $result = mysql_query($query);
    if(mysql_num_rows($result) != 0){
        return true;
    }else{
        return false;
    }
}

Kun je volgensmij beter met als argument een result van een query doen.
Aangezien empty ook met een 'result' werkt, en zelf niet deze $_GET[] gebruikt.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if (empty($_GET['a']))
{ die ""; }


13 jaar geleden
 
0 +1 -0 -1
Liever gebruik je geen mysql_* maar mysqli, of pdo
Steen
steen
13 jaar geleden
 
0 +1 -0 -1
Lekkere foutafhandeling :p


13 jaar geleden
 
0 +1 -0 -1
Quote:
function mysql_average

Een database kan ook wel een gemiddelde berekenen hoor. En waarschijnlijk ook nog beter ook.
Wouter De Schuyter
Wouter De Schuyter
13 jaar geleden
 
0 +1 -0 -1
WOOOT!

exit; !?

Zoals steen al zei, lekkere foutafhandeling!


13 jaar geleden
 
0 +1 -0 -1
@Karl
je hebt Idd AVG in MySQL, maar dat is zonder weging


13 jaar geleden
 
0 +1 -0 -1
Quote:
martin schreef op 20.09.2009 19:43
@Karl
je hebt Idd AVG in MySQL, maar dat is zonder weging

Als je met dit script weging gaat doen, dan krijg je d'r nul uit, aangezien jij het keer een onbekende / niet bestaande variabele doet. Of je doet het keer een een totaal verkeerde kolom.
Verder zou dit script ook impliceren dat de weging bij elk veld gelijk is, wat meestal bij weging niet zo is (daarvoor het het weging, want de ene weegt zwaarder dan de andere).
En natuurlijk moet je ook integers buiten quotes doen.

Edit: En als het wel zou werken, dan zou het nog hetzelfde uitkomen. Test dit script maar eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$blaat
= array(1,2,3,4,5,6);
$a = 0;
foreach($blaat as $blup)
{

$tot = $tot + $blup;
$a++;
}

$gem = $tot / $a;
var_dump($gem);

$a = 0;
$tot = 0;
$weging = 2;
foreach($blaat as $blup)
{

$tot = $tot + $blup * $weging;
$a = $a + $weging;
}

$gem = $tot / $a;
var_dump($gem);
?>

Waarom er hetzelfde uitkomt? Dat is wiskunde, bij een breuk kan je dat weg strepen.
Roel -
Roel -
13 jaar geleden
 
0 +1 -0 -1
Webmakerij schreef op 20.09.2009 18:34:
Liever gebruik je geen mysql_* maar mysqli, of pdo

Gewijzigd op 20.09.2009 18:36 door Webmakerij


Help? Ik heb heel m'n spel met mysql_query() gebouwd?!


13 jaar geleden
 
0 +1 -0 -1
Roel kut voor je


Bewerkingen op je data laat je indien mogelijk natuurlijk gewoon door de database afhandelen die kan dat 1) sneller 2) is daar voor bedoeld
Alleen soms is dat niet altijd mogelijk of is dat in efficient omdat je dan 2 querys moet posten die dan misschien uiteindelijk langzamer zijn


13 jaar geleden
 
0 +1 -0 -1
de weging is een sql kolom, ik heb net ook wat verberterd
Afra ca
Afra ca
13 jaar geleden
 
0 +1 -0 -1
Agree @ Webmakerij, z'n beiden posts that is.


@ Roel: LOL..... ?
Robert Deiman
Robert Deiman
13 jaar geleden
 
0 +1 -0 -1
Martin,
De functie mysql_results_empty, waarom doe je niet gewoon:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(mysql_num_rows($result) != 0){

}

?>

Doet namelijk hetzelfde als in jou geval nu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(mysql_results_empty($query)){

}

?>

Daarbij heb je dan ook meteen de resultset nog tot je beschikking voor de fetch functies of welke je ook wilt gebruiken. Daarnaast als je wel een fetch functie na deze functie wilt gebruiken, moet je nog een keer de resultset aanmaken, beetje dubbelop en dus overhead.

Voor de connectiefunctie mag ik wel zeggen dat het jammer is dat je een variabele $conn aanmaakt, dan in een if $conn gaat controleren en eventueel return false terug geeft. Je kan net zo goed:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(!mysql_connect($host,$user,$pass)){
  return false;
}

?>

gebruiken. (zelfde geld voor $db_selected)
Zie ook dat die exit; er bij mij niet staat, wanneer een functie een "return" doet, dan springt die al uit de functie en is exit; nergens voor nodig.
Daarbij kan het best zijn dat je connectie wel wordt gemaakt en dat je database niet wordt gevonden. Dat is nergens uit te halen in jou functie, hoe moet je dan een probleem vinden en oplossen. Foutafhandeling (daar is denk ik deze functie toch deels voor bedoeld) moet een developer natuurlijk ook helpen een fout te vinden en op te lossen.

Wat Karl al aangeeft is helemaal waar, de weging zal wisselen en zodoende moet je dat waarschijnlijk uit je database halen. Op deze manier krijg je bij welke weging je ook toevoegd altijd eenzelfde resultaat. Heb je de weging wel in een SQL kolom staan, dan kan je het geheel ook met SQL berekenen en heb je daar helemaal geen PHP berekeningen bij nodig. Het is zeker overhead om dit soort berekeningen (mits ze dus mogelijk zijn in SQL) in PHP te doen, eerst de hele WHILE lus doorlopen, en daarop pas gaan rekenen. Het kan in 1 keer.

Het nut van de "mysql_query_id($query)" functie ontgaat me volledig. Wil je echt iets invoegen in een database (nieuwe rij toevoegen) dan wil je ook weten of het invoegen gelukt is. Ook hier wil je dus foutafhandeling op kunnen toevoegen.

De functie "mysql_queryf" doet eigenlijk helemaal niets. Je geeft maar 1 argument mee aan de functie en je functie doet eigenlijk alleen wat als je meer dan 1 argument meegeeft. Dus die functie lijkt me overbodig. Daarbij snap ik ook niet wat die functie dan wel moet doen. Een resultset meegeven doet niets, een query meegeven doet niets (naja, niets nuttigs, want er wordt behalve het uitvoeren van de query niets gedaan)

Ten slotte valt me op dat je aan elke functie de query meegeeft, maar in een aantal van de gevallen wil je ook de resultset buiten die functie (of in een andere functie) gebruiken. Misschien is het dus ook handiger de resultset mee te geven, dan hoef je niet steeds opnieuw deze te maken door de *sql_query functie.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Gerard M
Gerard M
13 jaar geleden
 
0 +1 -0 -1
Zelf vind ik de volgende functie handig, ik gebruik nooit mysql_fetch_object/array en heb ik altijd maar 1 database connectie.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function mysql_fetch_query($sql, $return_row = false) {
    $res = mysql_query($sql);
    return (mysql_error() != '') ? false:(($return_row) ? mysql_fetch_row($res) : mysql_fetch_assoc($res));
}


$row = mysql_fetch_query("SELECT field FROM table LIMIT 1") or trigger_a_database_error();

?>


Eigenlijk stelt het niks voor, het scheelt alleen wat typ werk. Gelukkig heeft mySQL ook JOINS en subqueries, dus 9 van de 10 keer is deze functie een beetje overbodig.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. extra-mysql-functies

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.