Verkorte mysql_real_escape_string()

Door - -, 20 jaar geleden, 4.400x bekeken

Uiteraard is dit nou niet echt een functie die veel toevoegt, maar dit is dan ook meer om te laten zien dat de categorie [Snippets] is toegevoegd.

Gesponsorde koppelingen

PHP script bestanden

  1. verkorte-mysqlrealescapestring

 

Er zijn 15 reacties op 'Verkorte mysqlrealescapestring'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
- SanThe -
- SanThe -
20 jaar geleden
 
0 +1 -0 -1
Scheelt je wel dagen typewerk.
- -
- -
20 jaar geleden
 
0 +1 -0 -1
Dat wel ja, het is iets wat ik in een hoop van mijn systemen gebruik.
Onbekend Onbekend
Onbekend Onbekend
20 jaar geleden
 
0 +1 -0 -1
5x per file, 10 seconde per typen verschil een site met 100 files:
100*5*10 = 5000/60/60 = 1,389 uur.
Ed
Ed
20 jaar geleden
 
0 +1 -0 -1
Alleen functioneel is dit niet handig, aangezien het in de runtime van de script er niet sneller op wordt. Gebruik hem wel vaak op de volgende manier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($_POST as $key => $value) {
        $_POST[$key] = mysql_real_escape_string($value);
}

?>


Scheelt ook typen.
Onbekend Onbekend
Onbekend Onbekend
20 jaar geleden
 
0 +1 -0 -1
Lol, t wordt nog mooier.. Ik leer hier zelfs van, ik heb nooit aan dit soort dingen gedacht.
- -
- -
20 jaar geleden
 
0 +1 -0 -1
Hm, die van Danny is inderdaad ook erg handig!
Marvin S
Marvin S
20 jaar geleden
 
0 +1 -0 -1
@Tommy
even uitgerekend tik jij dan dus 10 seconden over plus minus 27 tekens.
(27 tekens zijn de lege mysql_escape_... notatie)

als jij dus die 'functie' gebruikt zul jij nog plus minus 8 tekens moeten typen.
(8 tekens zijn de functie aanroep)

En niet te vergeten in elke file de function include(''); (van 12 tekens).

Dat maakt dus met deze nieuwe functie een typereeks van 20 tekens per file.

10/27tekens = 0.37seconden per teken
oude manier: duurt het tikken voor jou dus 10 seconden per file.

0.37sec * 20tekens = 7.40sec
nieuwe manier: duurt het tikken voor jou dus 7.40 seconden per file.


Het daadwerkelijke verschil is dus 10.0 - 7.40 = 2.60 seconden per file.

2.60sec x 100 files = 260seconden /60 = 4.3 minuten / 60 = 0.07222222 uur.

Dus het verschil valt reuze mee. ;-)

edit: Oké 8< knip..het is een snippet..zal geen commentaar meer geven :P
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
Wat een domme onzin is dit!

mysql_real_escape_string(); heeft in veel gevallen de link identifier nodig.
Als je 'm aanroept voor dat je verbinding hebt gemaakt met de database, gaat ie namelijk zelf een verbinding proberen te maken. En dat lukt dan natuurlijk niet zonder gegevens. Met alle errors van dien!
Frank -
Frank -
20 jaar geleden
 
0 +1 -0 -1
Zoals reeds gezegd is dit vragen om problemen en bugs in je systeem, daarnaast hoef je bij het gebruik van een goede editor niet de complete functienaam in te kloppen. Met automatisch aanvullen geeft de editor alle mogelijke combinaties. En wanneer jij zelf eenmalig een snippet invoert in je editor, kun je met een hele korte code enorme lappen php-code op je scherm zetten.

En waarom nog prutsen met mysql-functies wanneer de mysqli-functies beter zijn? PDO kun je uiteraard ook gebruiken, dan ga je natuurlijk ook direct met prepared statements aan de slag, wat in mysqli overigens ook kan.

Kortom, mysql_real_escape_string() heb je eigenlijk helemaal niet meer nodig en hoef je al helemaal niet meer in te kloppen.
Pim Vernooij
Pim Vernooij
20 jaar geleden
 
0 +1 -0 -1
Wat pgFrank zegt: gebruik PDO + Prepared Statements!
Iltar van der berg
iltar van der berg
20 jaar geleden
 
0 +1 -0 -1
LOL! als je van dingen in kinderschoenen houd moet je pdo gebruiken ja... ;)

Gebruik je een database van mysql en pgsql of mssql tegelijk in hetzelfde script?
Ik dacht het niet... Waarom zou je dan PDO gebruiken
PHP Newbie
PHP Newbie
20 jaar geleden
 
0 +1 -0 -1
@iltar,

Maak dit eens na dan. Ben eens benieuwd hoe je het oplost:

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
23
24
25
26
27
28
29
30
<?php
try
{
    $db = new PDO('mysql:host=localhost;dbname=test','user','password');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $db->beginTransaction();
    
    $db->query("INSERT INTO tabel (naam) VALUES ('Piet')");
    $db->query("INSERT INTO tabel (naam) VALUES ('Jan')");
    $db->query("INSERT INTO tabel (naam) VALUES ('Karel')");
    $db->query("INSERT INTO tabel (naam) VALUES ('Kees')");
    
    $db->commit();
    
}

catch(PDOException $e)
{

    if(isset($db))
    {

        $db->rollBack();
    }

    
    echo '<pre>';
    echo 'Regel: '.$e->getLine().'<br>';
    echo 'Bestand: '.$e->getFile().'<br>';
    echo 'Foutmelding: '.$e->getMessage();
    echo '</pre>';
}

?>


Voorbeeld komt uit de Tut van Blanche over PDO.
Douwe
Douwe
20 jaar geleden
 
0 +1 -0 -1
@Iltar;
De voordelen van PDO zijn niet alleen het multi-database-gedoe, ook dat het werkt met Exceptions, met Transactions en met Prepared Statements vind ik persoonlijk heel fijn. En die drie dingen heb je niet met mysql_ en volgens mij ook niet met mysqli_.
-
Okay, ik zie net dat de MySQLi-class wel Transactions en Prepared Statements heeft. Dan zijn dus alleen multi-database-gedoe en Exceptions nog over als voordelen voor PDO, maar ik vind de OO-notering van PDO ook veel fijner dan die van MySQLi.
Pim Vernooij
Pim Vernooij
20 jaar geleden
 
0 +1 -0 -1
@iltar van der berg: dingen in de kinderschoenen? Volgens mij heb jij het niet helemaal begrepen...

Het voordeel van PDO is de consistentie. Het maakt niet uit welke database driver je gebruikt, de API blijft hetzelfde. Bij een project dat uit meerdere mensen bestaat of een project dat overgedragen word naar iemand anders, biedt dat dus uitermate veel voordelen.

Je moet het dus breder zien dan alleen je eigen script. Kijk naar de organisatie, de onderhoudbaarheid en de overdraagbaarheid. Dan is PDO echt een uitkomst!
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Toby hinloopen
toby hinloopen
19 jaar geleden
 
0 +1 -0 -1
lang leve copy-paste :P


1x mysql_real_escape_string() typen en dan gewoon copy/pasten.
escape() kan natuurlijk ook. (is 'escape' geen standaard PHP functie...?)

nog korter:
mres(), de afkorting ervan. :P

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

Inhoudsopgave

  1. verkorte-mysqlrealescapestring

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.