ISSET input voor MySQL SELECT

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marcel Vuuren

Marcel Vuuren

07/07/2021 13:50:23
Quote 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

18/09/2021 12:09:18
 
Adoptive Solution

Adoptive Solution

07/07/2021 14:12:47
Quote 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
Quote 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
 
Ad Fundum

Ad Fundum

07/07/2021 15:17:44
Quote 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
Quote 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
Quote 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.
 
Langosh Virginia

Langosh Virginia

27/08/2021 11:06:02
Quote Anchor link
Hi all. I am working with a survey form in HTML. The form has about 10 checkboxes near the end. Basically, the checkboxes have a bunch of statements, and the user is supposed to mark whatever ones they agree with. Then, all of this information needs to be stored in a database. When it comes to the database, the database is supposed to show Y for boxes that the user checked, and N for the ones they didn't agree with.

This is what I have on the HTML side:

<p>Check the boxes beside the statement with which you agree.</p>
<input type="checkbox" name="boxes[]" value="Y">I regularly read the news and other periodicals, such as magazines.<br>
<input type="checkbox" name="boxes[]" value="Y">I read biographies, novels, story collections, comics, or poetry for fun.<br>
<input type="checkbox" name="boxes[]" value="Y">I wrote 3 or more essays per year in high school.<br>
<input type="checkbox" name="boxes[]" value="Y">I wrote a research paper in high school.<br>


MyMileStone Card
Gewijzigd op 28/08/2021 10:59:45 door Langosh Virginia
 
- Ariën -
Beheerder

- Ariën -

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



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.