In het volgende script zou ik nog een insert into toe willen voegen.
nu heb ik dit geprobeerd:


<?php
 $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO track (agent, ip)
    VALUES ('test1', '1.1.1.1')";
    $connect->exec($sql);
?>

Enkel voegt die dan niks toe. Kan iemand mij vertellen hoe ik dit het best kan toevoegen in de onderstaande code? Wanneer ik de code in een losse file zet werkt het namelijk wel.

<?php
if(isset($_POST['id']))

{
  try
  {
    $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $id = trim($_POST['id']);
    if($id != "")
    {
      $query = "SELECT views FROM $db.tbl_radios WHERE id='$id'";
    $data = $connect->prepare($query);
    $data->execute();
    $result = $data->fetch(PDO::FETCH_ASSOC);
      $views = $result['views'];
      $views++;
      $update = $connect->exec("UPDATE $db.tbl_radios SET views = $views WHERE id = '$id'");
      echo json_encode(array("statusCode"=>200));
    }
    else
    {
     echo json_encode(array("statusCode"=>201));
    }
  }
  catch(Exception $e)
  {
    echo json_encode(array("statusCode"=>201));
  }
}
else
  echo json_encode(array("statusCode"=>201));

$connect = null;
 
?>
Allereerst twee dingen:
- waarom stel je voor elke query de ATTR_ERRMODE in? als je dit dan toch overal gebruikt dan doe je dit toch gewoon eenmalig bij de creatie van je database-connectie ($connect, is overigens ook een rare naam, wat is er mis met $db?); nu komt het over alsof je elke keer een soort van toverformule aan het incanteren bent

- dit is absoluut niet het idee van prepared statements; de queries zouden placeholders moeten bevatten waar je later waarden aan koppelt; wat jij doet is rechtstreeks deze waarden in de SQL stoppen door simpelweg hier variabelen in op te nemen / te concateneren

Dan de reden dat "er niets wordt toegevoegd": geen idee? Wat gebeurt er nog meer buiten die code-snippet? Je maakt gebruik van exceptions, dus waar is je try-catch blok? Heb je geprobeerd die query rechtstreeks uit te voeren op de database? Bestaan de tabel en de kolommen wel? Wat voor foutmeldingen krijg je (evt na toevoeging van je try-catch blok)? Wat zegt je errorlog? Bestaat $connect uberhaupt wel in het bovenste fragment? Heb je het melden+weergeven van foutmeldingen aangezet in de code voor ontwikkeling?

Dit is weer een vraagstuk waar "het probleem niet het probleem is", maar meer dat je niet weet wat er misgaat omdat je niet weet hoe je informatie over de toestand van je applicatie kunt verzamelen.

Reageren