(PHP)If语句有问题(它们不能正常工作)

(PHP)If语句有问题(它们不能正常工作),php,sql,Php,Sql,我正试图编写一个PHP文件来更新数据库中的数据,但由于某些原因,if语句不起作用。我已经做了测试,看看是否所有的职位都被填补了,一切都应该正常。请帮忙 <?php session_start(); include 'dbh.php'; $newname = htmlspecialchars($_POST['nieuwenaam']); $newprice = htmlspecialchars($_POST['nieuweprijs']); $oldname = $_POST['ouden

我正试图编写一个PHP文件来更新数据库中的数据,但由于某些原因,if语句不起作用。我已经做了测试,看看是否所有的职位都被填补了,一切都应该正常。请帮忙

<?php
session_start();
include 'dbh.php';

$newname = htmlspecialchars($_POST['nieuwenaam']);
$newprice = htmlspecialchars($_POST['nieuweprijs']);
$oldname = $_POST['oudenaam'];
$oldprice = $_POST['oudeprijs'];
$pid = $_POST['pid'];

if(!isset($newname) && !isset($newprice))
   {
      echo 'hoi';
   }
elseif(!isset($newname) && isset($newprice))
   {
        echo $newprice;
        $sql = "UPDATE producten SET naam = '$oldname' , price = '$newprice' WHERE product_id = $pid";
        $query = $PDO->prepare($sql);   
        $query->execute();
    }
elseif(isset($newname) && !isset($newprice))
    {
        echo $newname;
        $sql = "UPDATE producten SET naam = '$newname' , price = '$oldprice' WHERE product_id = $pid";
        $query = $PDO->prepare($sql);   
        $query->execute();
    }
更换!isset()由空()和isset()由!空的()


你把你的变量设置在你的条件之上,然后你的检查会显示变量是否被设置。我猜你的变量总是设置好的,这就是为什么它看起来不起作用的原因

不要使用
isset($newname)
而使用
isset($\u POST[“nieuwenaam”])

它可能会起作用。

“不起作用”。。。您期望发生什么以及实际发生了什么?您在
if
elseif
中的所有条件都为false,因此它不会执行您的查询。您在脚本顶部定义了
$newname
$newprice
,因此所有
isset()
将返回true
$newname=htmlspecialchars(
始终设置
$newname
(可以为空,但已设置)。因此测试
isset($newname)
没有任何用处,它总是正确的。如果你把变量直接放在查询中,为什么要使用准备好的语句。看看准备好的语句的正确用法。
if(empty($newname) && empty($newprice)){
  echo 'hoi';
}elseif(empty($newname) && !empty($newprice)){
    echo $newprice;
    $sql = "UPDATE producten SET naam = '$oldname' , price = '$newprice' WHERE product_id = $pid";
    $query = $PDO->prepare($sql);   
    $query->execute();
}
elseif(!empty($newname) && empty($newprice)){
    echo $newname;
    $sql = "UPDATE producten SET naam = '$newname' , price = '$oldprice' WHERE product_id = $pid";
    $query = $PDO->prepare($sql);   
    $query->execute();
}