Mysqli en real_escape_string

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nick B

Nick B

14/01/2010 13:18:00
Quote Anchor link
Beste,

Sinds kort ben ik overgestapt van mysql naar mysqli, echter gaat de overstap moeizamer als verwacht.

Ik loop nu tegen het probleem aan dat je vroeger in mysql hetvolgende kon doen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT
                        tbl_userright_id
            FROM
                        tbl_userright
            WHERE
                        tbl_userright_definition = '".mysql_real_escape_string($sectionlevel)."'


dat werkt blijkbaar niet meer in mysqli, dus na wat zoeken kwam ik tot de volgende oplossing
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$mysqli->real_escape_string($sql = "SELECT
                        tbl_userright_id
            FROM
                        tbl_userright
            WHERE
                        tbl_userright_definition = '".$sectionlevel."'");


Nu is mijn vraag, is dit de correcte oplossing (ik krijg gen foutmelding)?

Alvast bedankt
 
PHP hulp

PHP hulp

20/04/2024 09:44:02
 
Joren de Wit

Joren de Wit

14/01/2010 13:27:00
Quote Anchor link
Nee, je gebruikt het niet juist. Ik zou zeggen kijk eens naar de php.net handleiding over de real escape string method van mysqli.
 
Nick B

Nick B

14/01/2010 13:54:00
Quote Anchor link
die had ik ook al gevonden, maar ik wil niet op die manier werken, want dan moet je onnodig veel variabele aanmaken. Als ik het op hun manier zou doen moet ik het zo doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sectionlevel = mysqli_real_escape_string($sectionlevel);


En in het geval van een formulier krijg je een hele lijst aan extra variabele:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$veld 1 = mysqli_real_escape_string($_POST['veld1']);
$veld 2 = mysqli_real_escape_string($_POST['veld2']);
$veld 3 = mysqli_real_escape_string($_POST['veld3']);
$veld 4 = mysqli_real_escape_string($_POST['veld4']);


En dat wil ik eigenlijk niet, ik zou de real_escape_string krijg in de query willen gebruiken zoals vroeger.

Weten jullie of dat mogelijk is?

Alvast bedankt
 
Mr.Ark

Mr.Ark

14/01/2010 14:01:00
Quote Anchor link
Je moet elke keer de connectie openen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysqli_real_escape_string($Connect, $_POST['iets'])
 
- SanThe -

- SanThe -

14/01/2010 14:01:00
Quote Anchor link
In je eerste post zie ik mysql_real_escape_string()
En in je laatste mysqli_real_escape_string()
Dat lijkt mij al wel een verschil te maken.

Verder, maar dat weet je vast al, is '$veld 1' een ongeldige $varnaam.
Je bedoelt waarschijnlijk '$veld_1' of '$veld1'.
 
Nick B

Nick B

14/01/2010 14:13:00
Quote Anchor link
@SanThe, ja sorry, was even als voorbeeld ;)

Maar het klopt dat jet het verschil zie met de i, daar gaat dit probleem over. In de oude sitautie kon je mysql_real_escape_string gebruiken in de query en met nieuwe versie van mysql (dus mysqli) kan dat niet meer, in ieder geval mij lukt het niet vandaar de vraag ;)

Dus nogmaals ik zou graag het volgende willen bereiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT
                        tbl_userright_id
            FROM
                        tbl_userright
            WHERE
                        tbl_userright_definition = '".mysqli_real_escape_string($sectionlevel)."'

Maar op die manier werkt het niet, en zoals Blanche verwees naar de manual, daar staat alleen de volgende manier beschreven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$veld 1 = mysqli_real_escape_string($_POST['veld1']);
$veld 2 = mysqli_real_escape_string($_POST['veld2']);
$veld 3 = mysqli_real_escape_string($_POST['veld3']);
$veld 4 = mysqli_real_escape_string($_POST['veld4']);


en dus niet de manier waarop ik wil :P

Is het nu wat duidelijker?
 
Joren de Wit

Joren de Wit

14/01/2010 14:38:00
Quote Anchor link
Tja, kijk dan nog eens goed naar die handleiding. Daar zie je dat mysqli_real_escape_string() twee parameters nodig heeft. De eerste is namelijk degene die de verbinding met de database aangeeft. Als je die erin zet, zal het ook gewoon werken...
 
Mr.Ark

Mr.Ark

14/01/2010 14:55:00
Quote Anchor link
@ Nick

Antwoord is allang gegeven, ga eerst eens het hele topic weer doorlezen voordat je iets post.

Verder lees gewoon de handleiding door die blanche had gegeven, en dan niet even scrollen en klaar maar alles goed doorlezen.
 
Niels K

Niels K

14/01/2010 16:16:00
Quote Anchor link
Ik ben het eens met Mr.Ark Wat je wel kan doen is het volgende, je maakt een variable aan die een connectie definieerd. Dus zoiets

$mysqli = new mysqli (hier de gegevens van je database);

en dan kan je in de query het volgende gebruiken

$mysqli->real_escape_string (hier de parameter)

Hoe het met de parameters ziet moet je zelf zien uit te zoeken.
 



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.