Variabele in query
Onderstaande sql query doet het maar inplaats van frans duits of engels wil ik graag de variabele $vakgebied1 $vakgebied2 en $vakgebied3
Hoe moet ik het script aanpassen om dit voor elkaar te krijgen. Heb vanalles geprobeerd maar dat deed het allemaal niet.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$vakgebied1 = $_POST['vakgebied1'];
$vakgebied2 = $_POST['vakgebied2'];
$vakgebied3 = $_POST['vakgebied3'];
$sql = 'SELECT naam'
. ' FROM vakgebiedwerknemer'
. ' WHERE vakgebied IN(\'frans\', \'duits\', \'engels\')'
. ' GROUP BY naam'
. ' HAVING COUNT(1) = 3 LIMIT 0, 30 ';
$result=mysql_query($sql);
$num=mysql_numrows($result);
mysql_close();
?>
$vakgebied1 = $_POST['vakgebied1'];
$vakgebied2 = $_POST['vakgebied2'];
$vakgebied3 = $_POST['vakgebied3'];
$sql = 'SELECT naam'
. ' FROM vakgebiedwerknemer'
. ' WHERE vakgebied IN(\'frans\', \'duits\', \'engels\')'
. ' GROUP BY naam'
. ' HAVING COUNT(1) = 3 LIMIT 0, 30 ';
$result=mysql_query($sql);
$num=mysql_numrows($result);
mysql_close();
?>
---------
Bij voorbaat dank
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$vakgebied1 = $_POST['vakgebied1'];
$vakgebied2 = $_POST['vakgebied2'];
$vakgebied3 = $_POST['vakgebied3'];
$sql = "SELECT naam"
. " FROM vakgebiedwerknemer"
. " WHERE vakgebied IN('".mysql_real_escape_string($vakgebied1)."', '".mysql_real_escape_string($vakgebied2)."', '".mysql_real_escape_string($vakgebied3)."')"
. " GROUP BY naam"
. " HAVING COUNT(1) = 3 LIMIT 0, 30 ";
$result=mysql_query($sql);
$num=mysql_numrows($result);
mysql_close();
?>
$vakgebied1 = $_POST['vakgebied1'];
$vakgebied2 = $_POST['vakgebied2'];
$vakgebied3 = $_POST['vakgebied3'];
$sql = "SELECT naam"
. " FROM vakgebiedwerknemer"
. " WHERE vakgebied IN('".mysql_real_escape_string($vakgebied1)."', '".mysql_real_escape_string($vakgebied2)."', '".mysql_real_escape_string($vakgebied3)."')"
. " GROUP BY naam"
. " HAVING COUNT(1) = 3 LIMIT 0, 30 ";
$result=mysql_query($sql);
$num=mysql_numrows($result);
mysql_close();
?>
Verder mis ik ook fouten afhandeling..
Code (php)
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
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
<?php
// Query die uitgevoerd dient te worden
$aQuery =
"
SELECT
naam
FROM
vakgebiedwerknemer
WHERE
vakgebied
IN ('" .mysql_real_escape_string($_POST['vakgebied1']). "', ... )
GROUP BY
naam
HAVING COUNT(1) = 3
LIMIT 0, 30
";
// Query uitvoeren
$result = mysql_query($aQuery);
// Controleren of query gelukt is
if( !$result ) {
echo '...';
}
?>
// Query die uitgevoerd dient te worden
$aQuery =
"
SELECT
naam
FROM
vakgebiedwerknemer
WHERE
vakgebied
IN ('" .mysql_real_escape_string($_POST['vakgebied1']). "', ... )
GROUP BY
naam
HAVING COUNT(1) = 3
LIMIT 0, 30
";
// Query uitvoeren
$result = mysql_query($aQuery);
// Controleren of query gelukt is
if( !$result ) {
echo '...';
}
?>
..
Als $_POST[vakgebieden] integers zijn, mysql_real_escape_string vervangen door (int). type casting wordt dat genoemd.
Verder is mysql_close() overbodig
Gewijzigd op 07/09/2010 17:26:45 door Niels K
als je een veld taal hebt zoek je gewoon op taal = 'frans'. en normaal word gezegt (en met goede reden) dat je enkele quotes voor strings moet gebruiken, maar ingeval van queries is t vaak makkelijk om dubbele quotes te nemen.