数据无法更新

时间:2016-04-17 14:58:26

标签: php mysql

我正在尝试更新列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

1 个答案:

答案 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");

否则,不是使用命名占位符,而是将数字设置为文字字符串&#34;:keyname&#34;。