Php 未定义变量-Works

Php 未定义变量-Works,php,mysql,Php,Mysql,我有一个更新数据库中日期字段的脚本。(已购买) 我还在另一部分中使用了该数据,该部分更新了第二个日期字段,该字段采用输入日期并添加了的6年$duedate。它工作得很好,但是对于购买的变量我得到了未定义的变量错误 $duedate = new DateTime($purchased); $duedate->add(new DateInterval('P6Y')); 我已经尝试使用下面的定义,但是它会停止第二个字段的更新,并且不会抛出任何错误 $duedate = new DateTime

我有一个更新数据库中日期字段的脚本。(
已购买

我还在另一部分中使用了该数据,该部分更新了第二个日期字段,该字段采用输入日期并添加了的6年
$duedate
。它工作得很好,但是对于购买的变量
我得到了未定义的变量错误

$duedate = new DateTime($purchased);
$duedate->add(new DateInterval('P6Y'));
我已经尝试使用下面的定义,但是它会停止第二个字段的更新,并且不会抛出任何错误

$duedate = new DateTime($_POST['purchased']);
$duedate->add(new DateInterval('P6Y'));

$purchased = "";
$duedate = new DateTime($purchased);
$duedate->add(new DateInterval('P6Y'));

$purchased = null;
$duedate = new DateTime($purchased);
$duedate->add(new DateInterval('P6Y'));

$purchased = isset($_POST['purchased']) ? $_POST['purchased'] : '';
$duedate = new DateTime($purchased);
$duedate->add(new DateInterval('P6Y'));

$purchased = !empty($_POST['purchased']) ? $_POST['purchased'] : '';
$duedate = new DateTime($purchased);
$duedate->add(new DateInterval('P6Y'));
代码

$barcode = $_GET['barcode'];
$stmt = $conn->prepare("SELECT * FROM assets WHERE barcode=:barcode");
$stmt->execute(array(":barcode"=>$barcode));

$row=$stmt->fetch(PDO::FETCH_ASSOC);

if (isset($_POST['update'])) {
    $category = isset($_POST['category']) ? $_POST['category'] : null;
    $manufactuer = isset($_POST['manufactuer']) ? $_POST['manufactuer'] : null;
    $model = isset($_POST['model']) ? $_POST['model'] : null;
    $serial = isset($_POST['serial']) ? $_POST['serial'] : null;
    $itemcondition = isset($_POST['itemcondition']) ? $_POST['itemcondition'] : null;
    $locationb = isset($_POST['locationb']) ? $_POST['locationb'] : null;
    $locationr = isset($_POST['locationr']) ? $_POST['locationr'] : null;
    $comments = isset($_POST['comments']) ? $_POST['comments'] : null;
    $purchased = isset($_POST['purchased']) ? $_POST['purchased'] : null;
    $retired = isset($_POST['retired']) ? $_POST['retired'] : null;
    $stolen = isset($_POST['stolen']) ? $_POST['stolen'] : null;
    $latest = isset($_POST['latest']) ? $_POST['latest'] : null;
    $due = isset($_POST['due']) ? $_POST['due'] : null;

    $sql_part = array();
    $prepare = array();
    if ($category){
        $sql_part[] = 'category = :category';
        $prepare[':category'] = $category;
    }
    if($manufactuer){
        $sql_part[] = 'manufactuer = :manufactuer';
        $prepare[':manufactuer'] = $manufactuer;
    }
    if($model){
        $sql_part[] = 'model = :model';
        $prepare[':model'] = $model;
    }
    if($serial){
        $sql_part[] = 'serial = :serial';
        $prepare[':serial'] = $serial;
    }
    if($itemcondition){
        $sql_part[] = 'itemcondition = :itemcondition';
        $prepare[':itemcondition'] = $itemcondition;
    }
    if($locationb){
        $sql_part[] = 'locationb = :locationb';
        $prepare[':locationb'] = $locationb;
    }
    if($locationr){
        $sql_part[] = 'locationr = :locationr';
        $prepare[':locationr'] = $locationr;
    }
    if($comments){
        $sql_part[] = 'comments = :comments';
        $prepare[':comments'] = $comments;
    }
    if($purchased){
        $sql_part[] = 'purchased = :purchased';
        $prepare[':purchased'] = $purchased;
    }
    if($retired){
        $sql_part[] = 'retired = :retired';
        $prepare[':retired'] = $retired;
    }
    if($stolen){
        $sql_part[] = 'stolen = :stolen';
        $prepare[':stolen'] = $stolen;
    }
    if($latest){
        $sql_part[] = 'latest = :latest';
        $prepare[':latest'] = $latest;
    }
    if($due){
        $sql_part[] = 'due  =:due';
        $prepare[':due'] = $due;
    }

    $prepare[':barcode'] = $barcode;

    if(count($sql_part)){
        $sql = 'UPDATE assets SET ';
        $sql .= implode(', ', $sql_part);
        $sql .= ' WHERE barcode = :barcode';

        $stmt = $conn->prepare($sql);

        if($stmt){
            $result = $stmt->execute($prepare);
            $count = $stmt->rowCount();
            header('Location: ./usearch.php');
            exit;
        }
    }
}

$duedate = new DateTime($purchased);
$duedate->add(new DateInterval('P6Y'));

    <input type="hidden" name="due" value="<?php echo $duedate->format('Y-m-d'); ?>">
$barcode=$\u获取['barcode'];
$stmt=$conn->prepare(“从资产中选择*,其中条形码=:条形码”);
$stmt->execute(数组(“:barcode”=>$barcode));
$row=$stmt->fetch(PDO::fetch_ASSOC);
如果(isset($_POST['update'])){
$category=isset($\u POST['category'])?$\u POST['category']:空;
$manufactuer=isset($\u POST['manufactuer'])?$\u POST['manufactuer']:空;
$model=isset($\u POST['model'])?$\u POST['model']:空;
$serial=isset($_POST['serial'])?$_POST['serial']:空;
$itemcondition=isset($\u POST['itemcondition'])?$\u POST['itemcondition']:null;
$locationb=isset($_POST['locationb'])?$_POST['locationb']:空;
$locationr=isset($\u POST['locationr'])?$\u POST['locationr']:null;
$comments=isset($\u POST['comments'])?$\u POST['comments']:空;
$purchased=isset($_POST['purchased'])?$_POST['purchased']:空;
$retired=isset($_POST['retired'])?$_POST['retired']:null;
$STERNET=isset($_POST['STERNET'])?$_POST['STERNET']:空;
$latest=isset($\u POST['latest'])?$\u POST['latest']:空;
$due=isset($_POST['due'])?$_POST['due']:空;
$sql_part=array();
$prepare=array();
如果($类别){
$sql_part[]='category=:category';
$prepare[':category']=$category;
}
如果($Manufacturer){
$sql_part[]='manufactuer=:manufactuer';
$prepare[':manufactuer']=$manufactuer;
}
如果($model){
$sql_part[]='model=:model';
$prepare[':model']=$model;
}
如果($serial){
$sql_part[]='serial=:serial';
$prepare[':serial']=$serial;
}
如果($itemcondition){
$sql_part[]='itemcondition=:itemcondition';
$prepare[':itemcondition']=$itemcondition;
}
如果($locationb){
$sql_part[]=“locationb=:locationb';
$prepare[':locationb']=$locationb;
}
如果($locationr){
$sql_part[]=“locationr=:locationr';
$prepare[':locationr']=$locationr;
}
如果($评论){
$sql_part[]='comments=:comments';
$prepare[':comments']=$comments;
}
若有(已购买){
$sql_part[]='已购买=:已购买';
$prepare[':purchased']=$purchased;
}
如果(退休){
$sql_part[]='retired=:retired';
$prepare[':retired']=$retired;
}
如果(被盗){
$sql_part[]='被盗=:被盗';
$prepare[':被盗]=被盗美元;
}
若有(最新){
$sql_part[]='latest=:latest';
$prepare[':latest']=$latest;
}
如果($到期){
$sql_part[]='到期日=:到期日';
$prepare[':due']=$due;
}
$prepare[':条码']=$barcode;
if(计数($sql\U部分)){
$sql='更新资产集';
$sql.=内爆(“,”,$sql\u部分);
$sql.='其中条形码=:条形码';
$stmt=$conn->prepare($sql);
如果($stmt){
$result=$stmt->execute($prepare);
$count=$stmt->rowCount();
标题('Location:./usearch.php');
出口
}
}
}
$duedate=新日期时间($purchased);
$duedate->add(新的日期间隔('P6Y'));

您的代码有点奇怪,因为您似乎在更新和不更新的情况下都在使用该页面

试试这个:

<?php
$barcode = $_GET['barcode'];
$stmt = $conn->prepare("SELECT * FROM assets WHERE barcode=:barcode");
$stmt->execute(array(":barcode" => $barcode));

$row = $stmt->fetch(PDO::FETCH_ASSOC);

if (isset($_POST['update'])) {    
    $purchased = isset($_POST['purchased']) ? $_POST['purchased'] : null;
    $due = isset($_POST['due']) ? $_POST['due'] : null;
    $sql_part = array();
    $prepare = array();
    if ($purchased) {
        $sql_part[] = 'purchased = :purchased';
        $prepare[':purchased'] = $purchased;
    }
    if ($due) {
        $sql_part[] = 'due  =:due';
        $prepare[':due'] = $due;
    }

    $prepare[':barcode'] = $barcode;

    if (count($sql_part)) {
        $sql = 'UPDATE assets SET ';
        $sql .= implode(', ', $sql_part);
        $sql .= ' WHERE barcode = :barcode';

        $stmt = $conn->prepare($sql);

        if ($stmt) {
            $result = $stmt->execute($prepare);
            $count = $stmt->rowCount();
            header('Location: ./usearch.php');
            exit;
        }
    }
}

if (isset($purchased)) {
    $purchasedDate = new DateTime($purchased);
}
if (isset($due)) {
    $duedate = new DateTime($due);
} else {
    $duedate = new DateTime($purchased?:"now");
    $duedate->add(new DateInterval('P6Y'));
}
?>

<input type = "hidden" name = "due" value = "<?php echo $duedate->format('Y-m-d'); ?>">


您的代码有点奇怪,因为您似乎在更新和不更新的情况下都在使用该页面

试试这个:

<?php
$barcode = $_GET['barcode'];
$stmt = $conn->prepare("SELECT * FROM assets WHERE barcode=:barcode");
$stmt->execute(array(":barcode" => $barcode));

$row = $stmt->fetch(PDO::FETCH_ASSOC);

if (isset($_POST['update'])) {    
    $purchased = isset($_POST['purchased']) ? $_POST['purchased'] : null;
    $due = isset($_POST['due']) ? $_POST['due'] : null;
    $sql_part = array();
    $prepare = array();
    if ($purchased) {
        $sql_part[] = 'purchased = :purchased';
        $prepare[':purchased'] = $purchased;
    }
    if ($due) {
        $sql_part[] = 'due  =:due';
        $prepare[':due'] = $due;
    }

    $prepare[':barcode'] = $barcode;

    if (count($sql_part)) {
        $sql = 'UPDATE assets SET ';
        $sql .= implode(', ', $sql_part);
        $sql .= ' WHERE barcode = :barcode';

        $stmt = $conn->prepare($sql);

        if ($stmt) {
            $result = $stmt->execute($prepare);
            $count = $stmt->rowCount();
            header('Location: ./usearch.php');
            exit;
        }
    }
}

if (isset($purchased)) {
    $purchasedDate = new DateTime($purchased);
}
if (isset($due)) {
    $duedate = new DateTime($due);
} else {
    $duedate = new DateTime($purchased?:"now");
    $duedate->add(new DateInterval('P6Y'));
}
?>

<input type = "hidden" name = "due" value = "<?php echo $duedate->format('Y-m-d'); ?>">


文件末尾的这些行:

$duedate = new DateTime($purchased);
$duedate->add(new DateInterval('P6Y'));

    <input type="hidden" name="due" value="<?php echo $duedate->format('Y-m-d'); ?>">
$duedate=新日期时间($purchased);
$duedate->add(新的日期间隔('P6Y'));

文件末尾的这些行:

$duedate = new DateTime($purchased);
$duedate->add(new DateInterval('P6Y'));

    <input type="hidden" name="due" value="<?php echo $duedate->format('Y-m-d'); ?>">
$duedate=新日期时间($purchased);
$duedate->add(新的日期间隔('P6Y'));

$\u POST['purchased]
此处缺少报价。@SaucedApple是否可能未设置$\u POST['update'];该变量未定义在哪一行?您有许多这样的
$duedate=newdatetime($purchased)包括代码最底部的一个变量,以及其他变量。我怀疑你的
上面有一个。在我的注释之后^-逐个注释每个变量,直到它停止。我在这里没有什么可以补充的。它在问题中说“下面是我尝试过的…”,然后是粗体的“代码”。“代码”上方的所有内容都是不同的尝试,错误在第行$duedate=new DateTime($purchased)
如上述注释所述,$\u POST['purchased]
此处缺少报价。@SaucedApples是否可能未设置$\u POST['update'];该变量未定义在哪一行?您有许多这样的
$duedate=newdatetime($purchased)包括代码最底部的一个变量,以及其他变量。我怀疑你的
上面有一个。在我的注释之后^-逐个注释每个变量,直到它停止。我在这里没有什么可以补充的。它在问题中说“下面是我尝试过的…”,然后是粗体的“代码”。“代码”上方的所有内容都是不同的尝试,错误在第行$duedate=new DateTime($purchased)正如上面的评论中提到的,我不清楚你想做什么。您最初的问题只提到您得到了一个未定义的变量错误。我又更新了一次(也把它删减了一点)。如果有帮助,请告诉我。我看到你被编辑了,很可能是关于我在上面留下的评论,因为我不清楚你在说什么