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

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

$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
Nee, je gebruikt het niet juist. Ik zou zeggen kijk eens naar de php.net handleiding over de real escape string method van mysqli.
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:


$sectionlevel = mysqli_real_escape_string($sectionlevel);


En in het geval van een formulier krijg je een hele lijst aan extra variabele:

$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
Je moet elke keer de connectie openen.


mysqli_real_escape_string($Connect, $_POST['iets'])
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'.
@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:

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:
$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?
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...
@ 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.
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.

Reageren