Mysqli en real_escape_string
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)
1
2
3
4
5
6
2
3
4
5
6
SELECT
tbl_userright_id
FROM
tbl_userright
WHERE
tbl_userright_definition = '".mysql_real_escape_string($sectionlevel)."'
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)
1
2
3
4
5
6
2
3
4
5
6
$mysqli->real_escape_string($sql = "SELECT
tbl_userright_id
FROM
tbl_userright
WHERE
tbl_userright_definition = '".$sectionlevel."'");
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
real escape string method van mysqli.
Nee, je gebruikt het niet juist. Ik zou zeggen kijk eens naar de php.net handleiding over de En in het geval van een formulier krijg je een hele lijst aan extra variabele:
Code (php)
1
2
3
4
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']);
$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
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'.
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)
1
2
3
4
5
6
2
3
4
5
6
SELECT
tbl_userright_id
FROM
tbl_userright
WHERE
tbl_userright_definition = '".mysqli_real_escape_string($sectionlevel)."'
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)
1
2
3
4
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']);
$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...
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.
$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.