Beste PHP helpers,

Ik ben bezig met een website () 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.

<?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
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
<?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>";
    ?>

 $sql_query = "SELECT * FROM Games WHERE Game_id = '" . $_GET["Game_id"] . "'";
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.
De opties:
1. $_GET["Game_id"] bevat een tekenreeks:
<?php
  $sql_query = "SELECT * FROM Games WHERE Game_id = '" . mysqli_real_escape_string($conn, $_GET["Game_id"]) . "'"; 
?>

2. $_GET["Game_id"] bevat een getal:
<?php
  $sql_query = "SELECT * FROM Games WHERE Game_id = " . ((int) $_GET["Game_id"]);
?>

3. je wilt dat het altijd werkt:
Gebruik prepared statements.
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!

je kunt ook vooraf al constateren dat Game_id wel of niet een geheel getal is:

<?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.
Please create a new topic!
- Ariën - op 27/08/2021 11:27:40

Please create a new topic!


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?

Reageren