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