ISSET input voor MySQL SELECT

Overzicht

Sponsored by: Vacatures door Monsterboard

Marcel Vuuren

Marcel Vuuren

07/07/2021 13:50:23
Anchor link
Beste PHP helpers,

Ik ben bezig met een website (https://voetbalmatch.eu/) over WK wedstrijden.
Als in de laatste kolom (Game info) men op de i knop klikt opent er een nieuwe info pagina (info.php)
Het is de bedoeling dat alle wedstrijd informatie (welke in de db zit), behorende bij die wedstrijd zal worden weergegeven.

De Game_id wordt al meegegeven wanneer je op de i knop klikt.
Hierdoor kan je op de info.php met een echo het game_id nummer tonen. Dit is nu de huidige situatie als je dit test. Onderstaand de php code die nu is ingesteld.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
        if ( isset( $_GET["Game_id"] ) )
        echo "<p>Game_id =  " . $_GET["Game_id"] . "</p>";
      ?>


Mijn vraag is nu, hoe kan ik een mysql select maken op basis van het game_id nummer? Bijvoorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM Games WHERE Game_id = $_GET["Game_id"];


Ik heb al verschillende codes geprobeerd maar kom niet tot het gewenste resultaat of krijg een php foutmelding. Een voorbeeld van de code is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    include_once("includes/db_connect.php");
            $sql_query = "SELECT * FROM Games WHERE Game_id = "$_GET["Game_id"]"";
        if ( isset( $_GET["Game_id"] ) )
        echo "<p>ID: " . $_GET["Game_id"] . "</p>";
    ?>
 
PHP hulp

PHP hulp

22/12/2024 12:03:51
 
Adoptive Solution

Adoptive Solution

07/07/2021 14:12:47
Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql_query = "SELECT * FROM Games WHERE Game_id = '" . $_GET["Game_id"] . "'";
 
Ramon van Dongen

Ramon van Dongen

07/07/2021 14:44:18
Anchor link
In aanvulling op Adoptive Solution; lees je ook even goed in hoe je mysqli_real_escape_string toepast en dus de invoer vanuit $_GET escapet.

Anders zou door een kleinigheidje heel je database per ongeluk verwijderd kunnen worden.
Gewijzigd op 07/07/2021 14:44:37 door Ramon van Dongen
 

07/07/2021 15:17:44
Anchor link
De opties:
1. $_GET["Game_id"] bevat een tekenreeks:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  $sql_query
= "SELECT * FROM Games WHERE Game_id = '" . mysqli_real_escape_string($conn, $_GET["Game_id"]) . "'";
?>

2. $_GET["Game_id"] bevat een getal:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  $sql_query
= "SELECT * FROM Games WHERE Game_id = " . ((int) $_GET["Game_id"]);
?>

3. je wilt dat het altijd werkt:
Gebruik prepared statements.
 
Marcel Vuuren

Marcel Vuuren

07/07/2021 15:19:20
Anchor link
Ramon van Dongen op 07/07/2021 14:44:18:
In aanvulling op Adoptive Solution; lees je ook even goed in hoe je mysqli_real_escape_string toepast en dus de invoer vanuit $_GET escapet.

Anders zou door een kleinigheidje heel je database per ongeluk verwijderd kunnen worden.


Ga ik zeker doen, dank!
 
Ivo P

Ivo P

08/07/2021 15:30:26
Anchor link
je kunt ook vooraf al constateren dat Game_id wel of niet een geheel getal is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if($Game_id = filter_input(INPUT_GET, 'Game_id', FILTER_VALIDATE_INT)) {
 
  // doe iets met $Game_id

}
else {
   // geef een melding oid. omdat Game_id niet zoals verwacht een getal is.
}
?>


Dit is niet een vervanging van de SQL escaping: die moet je altijd toepassen, omdat je nooit 100% zeker bent of de bovenstaande check wel alles afvangt, en of je over 3 maanden niet door een aanpassing deze check weer per ongeluk verwijdert.
 
- Ariën  -
Beheerder

- Ariën -

27/08/2021 11:27:40
Anchor link
Please create a new topic!
 

19/01/2022 19:46:23
Anchor link
- Ariën - op 27/08/2021 11:27:40:
Please create a new topic!


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
foreach($_POST['boxes'] as $selected)
{
    if ($_POST['boxes']=="Y") {


You sure you want to check the $_POST['boxes'] array in that condition whether it is equivalent to "Y" instead of $selected?

Edit:
Ja, dát dus, wat je quote!
Verder kan dit topic dicht vanwege spamkick.
Gewijzigd op 19/01/2022 20:07:20 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

19/01/2022 20:07:59
Anchor link
.
 
 

Dit topic is gesloten.



Overzicht

 
 

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.