UTF ??? probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

BizTalk/ Azure Developer

Dit ga je doen •Understanding the scope of required functionality, translate them within context of way of working of the team into developed solutions, whilst safeguarding documentation; •Planning based on assigned sprint tasks; •Acting as an expert in estimation techniques and planning; •Understanding your role in the agile process and act in this way; •Facilitating internal communication and effective collaboration; •Working closely with scrum master to handle backlogs and new requests; •Providing information to the third parties about activities and needs for compliance. Hier ga je werken Our client is a leading organization focusing on animal nutrition, offering solutions that

Bekijk vacature »

Senior Software Developer C++

Vacature details Vakgebied: Software/IT Opleiding: Senior Vacature ID: 13342 Introductie Do you want to work for one of the most innovative companies located in the region of Eindhoven. Currently Due to growth we are looking for a Senior Software Developer. Our client is a high-tech company with international roots and can provide you with a challenging opportunity. Functieomschrijving Responsibilities: Design, develop, and maintain high-quality software applications in C++ Collaborate with other engineers, product managers, and stakeholders to understand requirements and develop solutions Write clean, maintainable, and efficient code Conduct thorough testing and debugging to ensure high-quality software Optimize applications for

Bekijk vacature »

Front-end (Angular) developer

Functie Om bovenstaande ambities waar te kunnen maken zijn ze op zoek naar een Front-end (Angular) developer. Het it-team bestaat momenteel uit de IT Manager, 2 back-end developers, 1 fullstack developer, 1 designer en een DevOps engineer. Ze zijn dus op zoek naar professionals die autonoom en gedisciplineerd aan de slag gaan, en bij aanvang als enige developer met hun Front-end applicaties aan de slag gaat. Wel hebben ze de ambitie om hier snel een 2e developer bij te vinden die jij dan ook zal kunnen aansturen/begeleiden. Je zult aan de slag gaan met het doorontwikkelen van hun bestaande UI

Bekijk vacature »

.NET developer

Functie Als .NET developer wordt jij onderdeel van ons ICT team. In dit multidisciplinaire team ben jij samen met onze senior .NET ontwikkelaar en medior .NET ontwikkelaar verantwoordelijk voor ons ERP systeem. In dit systeem (Navision) ga jij leren ontwikkelen. Wij bieden jou dan ook een gedegen opleiding aan, samen met de ondersteuning van onze Senior .NET developer. Daarnaast ga jij aan de slag met ons portaal geschreven in Sharepoint. Verder ben jij verantwoordelijk voor EDI verkeer en het ontwikkelen binnen het ERP systeem en andere toepassingen en rapportages. Van jou wordt verwacht dat jij het proces goed leert kennen

Bekijk vacature »

UX Writer (m/v/d)

UX Writer (m/v/d) Everything we do, starts with you. Together with you, we build the most human-centric fintech. We have the ambition to create the next. And - with Bertelsmann - a strong foundation to start from. Let’s make it new – for society and for yourself. Wij zijn op zoek naar een UX Writer (m/v/d) Fulltime - Op ons kantoor in Amsterdam of Heerenveen / deels vanuit huis Als UX Writer bij Riverty hou jij je bezig met onze strategie om daar te zijn waar onze gebruikers zijn en op de manier waarop zij ons nodig hebben, terwijl wij

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar ontbreekt er aan passie en motivatie niks. Jij bent communicatief sterk en pakt iedere uitdaging dan ook met beide handen aan. Op projectbasis ga jij met je team of met enkele andere ontwikkelaars intern aan de slag bij diverse partners. Op basis van het project ga jij aan de slag en zijn de werkzaamheden en technieken erg divers. Jouw werkgever stelt jouw ontwikkeling hierin voorop, zo krijg je een vast vertrouwenspersoon die één keer in de maand op locatie van jouw project zal kijken hoe het gaat en of er eventuele aandachtspunten zijn. Daarnaast krijg

Bekijk vacature »

Developer (One Data)

Do you have experience with managing IT Teams in a service delivery organization? Are you keen to bring the team and our platform to a higher level? Then Nutreco has a very interesting role for you! As a One Data developer you are responsible for the management, running and functional use of our integration landscape and processes within Nutreco. Nutreco is using at this time BizTalk 2016, and Apigee for its API management, to be replaced by Azure Integration Services as of 2023. You will be part of a virtual teams of 11 people (own and outsourced) working in an

Bekijk vacature »

Ervaren Software Developer

Functie omschrijving Ben jij een ervaren Software Developer, en heb je ervaring met technieken zoals C#, MS Access & SQL? Vind jij het leuk om maatwerk software te ontwikkelen voor klanten in een specifieke branche? Dan is dit de baan voor jou! Als ontwikkelaar ben jij samen met een team van 12 collega’s verantwoordelijk voor het bouwen van nieuwe functionaliteiten en het uitbreiden van de core applicatie. Belangrijk is dat je ervaring hebt met C# en MS Access. Je bent flexibel en klantvriendelijk ingesteld, omdat het belangrijk is om de klanten zo goed mogelijk van dienst te kunnen zijn. Thuiswerken

Bekijk vacature »

Software developer (PHP) - Utrecht centrum

Functie Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten. Het team bestaat uit 4 developers, een klein team dus met korte lijnen. Alles in intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. In het team streven ze naast de hoogst haalbare kwaliteit. Hiervoor werken ze nauw met elkaar samen en levert

Bekijk vacature »

Digital Agency is looking for PHP developers!

Functie The team currently has 20 colleagues, consisting of developers (front and backend) and the operations team, which also includes management and two scrum masters. They are looking for a PHP developer who is able to work independently. You will work in one of the three scrum teams and start working on a project for the customer. The interesting thing about this is that you do have variety in terms of work, but at the same time continuously work for existing customers. This also gives you the opportunity to really go into depth and develop innovative technical solutions. In terms

Bekijk vacature »

.NET Developer te Naarden

Bedrijfsomschrijving Voor mijn klant ben ik op zoek naar een .NET Developer om het huidige team te komen versterken. Deze organisatie bevindt zich in de logistieke sector, en zij hebben een eigen ERP systeem ontwikkeld dat zij inzetten ter optimalisatie van de logistieke processen van haar eindklanten. Deze organisatie bestaat inmiddels al ruim 20 jaar, waarbij zij een duidelijke missie hebben, namelijk: het werk van de eindklant makkelijker maken door de systemen die zij leveren. Ze werken over heel de wereld, wat deze organisatie een echte internationale speler maakt. Binnen de organisatie kenmerken ze zich door een dynamische en professionele

Bekijk vacature »

C#.NET Developer

Functieomschrijving We are looking for a dutch native speaker In deze uitdagende functie ga je werken als onderdeel van het development team, in de functie van C#.NET Developer, Je gaat maatwerk software bouwen voor diverse klanten. Ook optimaliseer je bestaande software en bouw je API koppelingen. Je bent vooral met back-end development bezig. Je krijgt veel vrijheid in deze functie en je krijgt de kans om mee te denken in bedrijfsprocessen. Deels thuiswerken is geen enkel probleem! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »

REMOTE - Front-end Angular developer

Functie Het IT-team bestaat momenteel uit de IT Manager, 2 back-end developers, 1 fullstack developer, 1 designer en een DevOps engineer. Ze zijn momenteel op zoek naar een ervaren Front-end developer die autonoom en gedisciplineerd aan de slag gaat, en bij aanvang als enige developer met hun Front-end applicaties bezig is. Wel hebben ze de ambitie om hier snel een 2e developer bij te vinden die jij dan ook zal kunnen aansturen/begeleiden. Je zult aan de slag gaan met het doorontwikkelen van hun bestaande UI in Angular. Maar ook het ontwikkelen van een mobiele app. Hierbij hechten ze veel waarde

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »
Ignace Verschaeve

Ignace Verschaeve

02/02/2024 18:00:09
Quote Anchor link
Ik wil via een csv file mijn database telkens aanvullen en/of updaten. Dit werkt, alleen ik slaag er niet in om een naamveld waar een single quote in staat in te lezen. Bijvoorbeeld een naam als D'Haenens met een single qoute wil die niet ik krijg telkens de foutmelding dat ik mijn syntax voor MariaDB moet aanpassen. Mijn collatie staat op utf8mb4_general_ci maar ik heb al andere collaties toegepast maar ik vind de juiste niet.
Als ik de singel qoute uit de tekst weglaat is er natuurlijk geen probleem. Hoe zou ik dat kunnen oplossen?
Dus de database is de laatste versie MariaDB gehost bij one.com. De csv file is gemaakt/weggeschreven als csvutf8.
Bedankt op voorhand.
Dit is de foutmelding:
d1002 Dhaenens, D'Haene, Dehaene,: Error updating record: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Haene, Dehaene,' WHERE IDR LIKE 'd1002'' at line 2
Gewijzigd op 02/02/2024 18:02:43 door Ignace Verschaeve
 
PHP hulp

PHP hulp

12/05/2024 05:48:23
 
- Ariën  -
Beheerder

- Ariën -

02/02/2024 18:19:35
Quote Anchor link
Dit lijkt mij een klassiek geval van escaping vergeten in je query.

In veel gevallen is je data niet goed als je ???? (ja, vraagtekens) ziet, of je benadert de data niet op de juiste manier. Waarschijnlijk heb je een verkeerde character encoding. (hier op PHPhulp ook, trouwens. Maar dat moet ik nog eens onderzoeken als ik een goede testopstelling gemaakt heb).

Dit is een interessant topic over UTF-8:
https://www.phphulp.nl/php/forum/topic/diakritische-tekens-als-weergegeven/103004/1/
Gewijzigd op 02/02/2024 18:25:41 door - Ariën -
 
Ignace Verschaeve

Ignace Verschaeve

02/02/2024 18:34:20
Quote Anchor link
Dit is de code om in te lezen
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Haal data uit CSV file lijn per lijn
            while(($line = fgetcsv($csvFile,0,";")) !== FALSE){
                // Get rij data
                $IDR  = $line[0];
                $variant  = $line[1];
              
            
                // Uitlezen van de gegevens in de csv
                echo "<span style=\"color: black\">".$IDR." ".$variant.": ";
            
                // Check of er reeds records zijn met dezelfde IDR en namen
                $sqlprev = "SELECT IDR FROM anaamvar WHERE IDR LIKE '$IDR' ";
                $result = $conn->query($sqlprev);
                //$prevResult = $db->query($prevQuery);
                
                if ($result->num_rows > 0)
                    {
                    // Update member data in the database
                    $sqlupd = "UPDATE anaamvar SET
                    variant = '".$variant."'
                    
                    WHERE IDR LIKE '".$IDR."' ";
                    if (mysqli_query($conn, $sqlupd)) {
                    echo "<span style=\"color: black\">".$IDR." "."Record met succes geupdated. " . "<br/>";
                    } else {
                    echo "<span style=\"color: red\">"."Error updating record: " . mysqli_error($conn)."</span>"."<br/>";}
                }
else{
                    
                    $sqlins = "INSERT INTO anaamvar (IDR, variant)
                    VALUES ('".$IDR."',
                            '".$variant."')";
                    if (mysqli_query($conn, $sqlins)) {
                    echo "<span style=\"color: green\">"."-".$IDR." ".$variant." "."Record met succes bijgevoegd. " . "<br/>";
                    } else {
                    echo "<span style=\"color: red\">"."Error invoegen record: " . mysqli_error($conn)."</span>"."<br/>";}
                    $teller ++;
                    
                }
                
            }
            
            // Close opened CSV file
            fclose($csvFile);
            
            $qstring = '?status=succ';
        }else{
            $qstring = '?status=err';
        }
    }else{
        $qstring = '?status=invalid_file';
    
}


Het is eigenlijk een tamelijk simpel gegeven. Ik weet alleen niet hoe ik die single quote kan escapen. Daar reikt mijn magere kennis van PHP niet ver genoeg. IK leer elke dag bij door vallen en opstaan want ik heb nooit een opleiding gehad, alles is zelfstudie.
Gewijzigd op 02/02/2024 18:57:38 door Ignace Verschaeve
 
- Ariën  -
Beheerder

- Ariën -

02/02/2024 19:26:26
Quote Anchor link
Lees je eens in over mysqli's real_escape_string()

Eigenlijk valt dit al onder de basiskennis. Als je dit niet weet dan maak je jouw database behoorlijk lek.
Of gebruik prepared statements. Dan hoef je ook niet extra op deze zorgen te letten.
Gewijzigd op 02/02/2024 19:27:07 door - Ariën -
 
Ignace Verschaeve

Ignace Verschaeve

02/02/2024 19:50:41
Quote Anchor link
Ik weet wel wat over die real escape strings maar niet hoe ik dit kan toepassen op de tabellen/lijnen in het csv bestand. Daar ligt mijn knoop. En kom niet af met theorie. Dat kan ik niet. Ik moet een voorbeeld hebben om dit te begrijpen. Geen droge theoriën aub.
 
- Ariën  -
Beheerder

- Ariën -

02/02/2024 20:41:35
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sqlprev = "SELECT IDR FROM anaamvar WHERE IDR LIKE '$IDR' ";


Je moet gewoon $IDR escapen. Hij struikelt nu over de ' van D'Haene die je query dus kapotmaakt.
Gewijzigd op 02/02/2024 20:42:20 door - Ariën -
 
Ignace Verschaeve

Ignace Verschaeve

03/02/2024 10:04:03
Quote Anchor link
Het is $variant die ik moet escapen want daar staat die D'Haene in.
Dit was de oorspronkelijke code die ik vervangen heb door een real_escape
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$IDR  = $line[0];
      //$variant  = $line[1];
      $variant = mysqli_real_escape_string($csvFile, $line[1]);

Waarbij $csvFile de .csv is waarvan ik inlees.
Maar ik krijg nu volgende foutmelding:
Fatal error: Uncaught TypeError: mysqli_real_escape_string(): Argument #1 ($mysql) must be of type mysqli, resource given in /customers/1/5/0/fv-vl-ardennen.be/httpd.www/beheerder/importdatanaamvar.php:49 Stack trace: #0 /customers/1/5/0/fv-vl-ardennen.be/httpd.www/beheerder/importdatanaamvar.php(49): mysqli_real_escape_string(Resource id #5, 'Aelvoet, Aalvoe...') #1 {main} thrown in /customers/1/5/0/fv-vl-ardennen.be/httpd.www/beheerder/importdatanaamvar.php on line 49
Waarbij die Aelvoet de eerste lijn is in die csv file:
a1000 Aelvoet, Aalvoet, Aelvoedt, Allevoet,

Ik zie niet direct waar ik het fout doe, jullie misschien wel?
Ik volg deze instructies: https://www.php.net/manual/en/function.mysql-real-escape-string.php
 
Adoptive Solution

Adoptive Solution

03/02/2024 10:35:13
Quote Anchor link
Altijd handig, de handleiding :

https://www.w3schools.com/php/func_mysqli_real_escape_string.asp

Denk dat dit voorbeeld in de buurt komt :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$firstname = mysqli_real_escape_string($con, $_POST['firstname']);


Zo dus :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$variant = mysqli_real_escape_string($con, $line[1]);
 
Ignace Verschaeve

Ignace Verschaeve

03/02/2024 10:55:28
Quote Anchor link
In het voorbeeld dat je geeft is $con de verbinding naar een database tabel, in mijn geval moet ik naar een csv bestand. Maar je hebt gelijk. Ik was mis in mijn redenering. Nu werkt het, bedankt.
Gewijzigd op 03/02/2024 11:00:24 door Ignace Verschaeve
 
Ivo P

Ivo P

05/02/2024 10:27:32
Quote Anchor link
Het vervelende van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php
$variant
= mysqli_real_escape_string($con, $line[1]); ?>


is, dat $variant nu een bewerkte versie van de naam bevat.
Zou je ergens dit willen gebruiken voor iets anders dan in de query, dan heb je een probleem. (en ja: ik zie dat jij dat op regel 34 inderdaad doet)

Zet je op het scherm
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo 'aangepast het record voor ' . $variant; ?>

Dan gaat dat 99 van de 100 keer goed, maar Jeanne d\'Arc is waarschijnlijk niet wat je op je scherm wilde zien.


Daarom ben ik er voorstander van om dergelijke escaping alleen toe te passen waar je het nodig hebt.
Dus in de opbouw van de query zelf.
(en als tegenhanger bij de opbouw van een html of xml bericht: voor de escaping met htmlspecialchars geldt hetzelfde)

Ik zou dus gekozen hebben voor de aanpassingen op regels 19 en 32:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$sqlupd
= "UPDATE anaamvar SET
                    variant = '"
. mysqli_real_escape_string($conn, $variant)."'
                    
                    WHERE IDR LIKE '"
.$IDR."' ";?>


En eveneens zou ik overal waar je dergelijke input naar je scherm stuurt weer htmlspecialchars() om variabelen zetten.
Is het niet voor bewuste acties van gebruikers, dan voorkom je toch ook problemen door onverwachte "rare" html-tekens in je invoer. Ook als je dat niet verwacht.
 
Ignace Verschaeve

Ignace Verschaeve

05/02/2024 10:56:14
Quote Anchor link
Dat escape teken komt dan wel niet zichtbaar in het uiteindelijke resultaat. En het doet wat ik wil doen. Qua beveiliging volstaat dit door het feit dat enkel bepaalde beheerders deze bewerkingen kunnen toepassen geen gebruikers. In wezen is het enkel alleen ik die het doe. Ik ben bezig met het opstellen van een lijst van 10.000den naamvarianten voor genealogische doeleinden. Gebaseerd op indexen van parochieregisters van omstreeks 1600 tot 1796 waarbij oude vormen gekoppeld worden aan de moderne versies. Mijn fout was dat ik een verkeerde redenering volgde over de werking van de real escape string. Ik slaag er nu eenmaal maar in om theorie te leren aan de hand van de praktijk en niet omgekeerd. Mijn leeftijd zeker?
 
Ivo P

Ivo P

05/02/2024 11:51:57
Quote Anchor link
Het zal zeker werken voor het doel dat je nu voor ogen hebt, maar ik bedoel te zeggen, dat het misgaat in de echo-regel.
Daar komt ten onrecht een \ in te staan.

En escaping van html en sql is niet alleen bedoeld als beveiliging tegen kwaadwillende derden.

Als jij lijsten inleest met geboorteregisters en dergelijke dan kan ik me voorstellen dat een deel daarvan met OCR is ingelezen en dat daarbij een C die wat hoeking geschreven is, zo maar verandert in een <

Of dat iemand bij het overtypen een typfout maakt en een < of iets dergelijks opneemt in de lijst.

Dáár wil je je ook tegen beschermen.
Dat kan leiden tot kapotte invoer in je database, of onverwacht blanco schermen

Voorbeeld?
Ik heb ooit eens een bug moeten zoeken omdat iemand in een fabriek nooit orders kon invoeren in het intranet.
Bij iedereen ging het goed, alleen bij deze gebruiker niet.

Uiteindelijk bleek dat degene die het gebouwd had van mening was dat de invoer uit de database veilig was en dat escaping onnodig zou zijn.

Alleen werd bij de order niet alleen user_id opgeslagen maar ook de naam.
En je raadt het al: deze persoon had een ' zijn naam zitten.

Dat gaf dus overlast voor deze gebruiker;
kostte tijd voor de opvolger van de developer (me)

Daarnaast wil je weer niet dat in je database Dhr Röntgen als "R&oul;tgen" wordt opgeslagen,
en op het scherm wil je de \\\\ niet zien staan.

Daarom ben ik voorstander van:
- altijd escapen op de plek waar het nodig is zodat je niet vertrouwen moet op "10 regels geleden zal dat wel geregeld zijn"
- en ook alleen daar waar het nodig is.

Je loopt dan ook niet aan tegen "ik moet een patch uitvoeren op de naam van dit record."
Want het gaat net zo goed fout bij een ' in de voornaam, geboorteplaats en zijn mailadres (al zullen daar weinig van zijn in dit geval)
 
Ad Fundum

Ad Fundum

07/02/2024 07:45:16
Quote Anchor link
Ignace Verschaeve op 05/02/2024 10:56:14:
Dat escape teken komt dan wel niet zichtbaar in het uiteindelijke resultaat. En het doet wat ik wil doen. Qua beveiliging volstaat dit door het feit dat enkel bepaalde beheerders deze bewerkingen kunnen toepassen geen gebruikers. In wezen is het enkel alleen ik die het doe. Ik ben bezig met het opstellen van een lijst van 10.000den naamvarianten voor genealogische doeleinden. Gebaseerd op indexen van parochieregisters van omstreeks 1600 tot 1796 waarbij oude vormen gekoppeld worden aan de moderne versies. Mijn fout was dat ik een verkeerde redenering volgde over de werking van de real escape string. Ik slaag er nu eenmaal maar in om theorie te leren aan de hand van de praktijk en niet omgekeerd. Mijn leeftijd zeker?

Nee, PHP is nodeloos ingewikkeld, zo is het nu eenmaal, dat heeft niets met leeftijd te maken.
En het gebruik van Mysqli::real_escape_string() is lastig, omdat je zelf heel goed moet snappen hoe je het per geval dient te gebruiken. Daarmee fouten maken kan catastrofaal zijn voor de veiligheid van je programma en de gegevens, SQL injectie staat nog steeds op de 3e plaats van meest voorkomende software fouten in de wereld in 2023: https://cwe.mitre.org/top25/archive/2023/2023_top25_list.html
Laten we eerlijk zijn, mysqli::real_escape_string() helpt daarbij nou niet echt om software veiliger te maken.

Gelukkig bestaat er ook nog zoiets als prepared statements, waarin escaping automatisch gaat. Je hoeft alleen een query te voorzien van plaatsvervangende symbolen, zoals $1, of met namen, zoals met PDO. Aparte PHP variabelen geef je mee aan de functies en escaping gaat dan altijd goed, er is geen onduidelijkheid over welk deel nu SQL code is, en welk deel SQL data. Zie: https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php

Het enige jammere van prepared statements is dat het niet voor alle situaties werkt. Stel je wilt de naam van een tabel in een JOIN variabel maken, dan is de enige optie om dat met de hand te doen (zoals met bijna alles waar het leuker wordt met SQL).
Er zijn ook betere databases als PostgreSQL. PostgreSQL heeft in PHP wel ondersteuning met pg_escape_identifier(), en nog veel meer leuke dingen.
Gewijzigd op 07/02/2024 07:47:09 door Ad Fundum
 



Overzicht Reageren

 
 

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.