2016-04-17 7 views
0

Я пытаюсь обновить столбец number Но я не могу заставить его работать правильно.Данные не обновляются

Вот код:

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

Что такое '$ odb'? Соединение «PDO»? –

+0

Да, это хорошо работает на все остальное. Так что проблем нет. –

ответ

1

Ваша линия

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

следует читать:

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

В противном случае вместо того, чтобы использовать именованный заполнитель Вы re установите номер в строчную букву «: keyname».

+0

Спасибо. В настоящее время я немного борюсь с этим, я довольно новичок в mysql. $ SQL-> execute (array (': keyname' => $ _POST ['keyname'], ': keyname' => $ id)); –

+0

Я не совсем понимаю, что должен делать код, но вы не должны указывать один и тот же параметр на два разных значения. Должно ли ваше второе ': keyname' читать': number'? –

+0

Не могли бы вы показать мне, как это сделать? Я пробовал эту проблему в течение нескольких дней. Я просто не могу это исправить. –

Смежные вопросы