Variabele in query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen van Merode

Jeroen van Merode

07/09/2010 16:22:01
Quote Anchor link
Geachte Heer/Mevrouw,

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)
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
<?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();
?>


---------

Bij voorbaat dank
 
PHP hulp

PHP hulp

17/11/2024 17:23:57
 
SilverWolf NL

SilverWolf NL

07/09/2010 16:32:24
Quote Anchor link
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
<?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();
?>
 
Niels K

Niels K

07/09/2010 17:25:26
Quote Anchor link
Wat voor meerwaarde heeft $vakgebied 1 .. 3 ? Het geeft allemaal meer code.
Verder mis ik ook fouten afhandeling..

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
<?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 '...';
}


?>


..

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
 
Mathijs -

Mathijs -

07/09/2010 18:00:43
Quote Anchor link
en ff voor de duidelijkheid op die query, het woordje in zorgt niet voor vertalingen.
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.
 



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.