2016-04-17 42 views
0

Ich versuche die Spalte zu aktualisieren number Aber ich kann es nicht richtig funktionieren. HierDaten werden nicht aktualisiert

ist der Code:

<?php 

     ob_start(); 
     require_once('includes/db.php'); 
     require_once('includes/init.php'); 
     if(!($user->LoggedIn())){ 
      header('location: login.php'); 
      die(); 
     } 
     if(!($user->isAdmin($odb))){ 
      header('location: index.php'); 
     } 
     if(!($user->notBanned($odb))){ 
      header('location: logout.php'); 
      die(); 
     } 
     if(!isset($_GET['id'])){ 
      header('location: index.php'); 
     } 
     $id = $_GET['id']; 
     $SQLGetInfo = $odb->prepare("SELECT * FROM `keys` WHERE `id` = :id LIMIT 1"); 
     $SQLGetInfo->execute(array(':id' => $_GET['id'])); 
?> 

<?php 
    if(isset($_POST['updateBtn'])){ 
     $update = false; 
     if($username != $_POST['keyname']){ 

      if(ctype_alnum($_POST['keyname']) && strlen($_POST['keyname']) >= 4 && strlen($_POST['keyname']) <= 35){ 
      $SQL = $odb->prepare("UPDATE `u138461750_log`.`keys` SET `number` = ':keyname' WHERE `keys`.`number` = :number"); 
      $SQL->execute(array(':keyname' => $_POST['keyname'], ':keyname' => $id)); 
      $update = true; 
      $username = $_POST['keyname']; 
      } 
      else { 
      echo '<div class="alert alert-danger"><p>Key has to be alphanumeric 4 > 35</p></div>'; 
      } 
     } 
?> 

    <div class="form-group"> 
     <label>Key</label> 
     <input type="text" class="form-control" name="keyname" placeholder="keyname" value="<?php echo $id;?>"/> 
     <button type="submit" name="updateBtn" class="btn btn-default">Update</button> 
    </div> 

Picture from database

+0

Was ist '$ odb'? Eine 'PDO'-Verbindung? –

+0

Ja ist es, es funktioniert gut auf alles andere. Also ist das Problem nicht da. –

Antwort

1

Ihre Linie

$SQL = $odb->prepare("UPDATE `u138461750_log`.`keys` SET `number` = ':keyname' WHERE `keys`.`number` = :number"); 

sollte lauten:

$SQL = $odb->prepare("UPDATE `u138461750_log`.`keys` SET `number` = :keyname WHERE `keys`.`number` = :number"); 

Andernfalls anstelle der Verwendung eines benannten Platzhalter Sie ein Setzen Sie die Zahl auf den Literalstring ": Schlüsselname".

+0

Danke. Momentan kämpfe ich mit diesem ein wenig, ich bin ziemlich neu bei MySQL. $ SQL-> execute (array (': Schlüsselname' => $ _POST ['Schlüsselname'], ': Schlüsselname' => $ id)); –

+0

Ich bin überhaupt nicht klar, was der Code tun soll, aber Sie sollten den gleichen Parameter nicht auf zwei verschiedene Werte einstellen. Soll Ihr zweiter ': Schlüsselname' 'Nummer' lauten? –

+0

Können Sie mir zeigen, wie es geht? Ich bin tagelang herumgelaufen. Ich kann es einfach nicht reparieren. –

Verwandte Themen