如果为空,则设置变量值(PHP)


Setting variable value if empty (PHP)

如果表单未提交(值的来源),我将尝试设置一个变量值。下面我有:

if (empty($order)) { 
   $order = 'ORDER BY product_name DESC'; 
} 
else { $order=$_POST['order']; }

这总是将值设置为"ORDER BY product_name DESC"并忽略表单。这可能只是一个小问题,但我无法识别。

有什么想法吗?

谢谢!

$order = isset($_POST['order']) ? $_POST['order'] : 'ORDER BY product_name DESC';

使用isset

if (isset($order) && empty($order)) { 
    $order = 'ORDER BY product_name DESC'; 
}else { 
    $order=$_POST['order']; 
}
这是因为$order总是空的。所以,去弄清楚为什么$order从未被设置,或者它的值为null或空字符串。或者使用isset($order)。

尝试使用isset:

if (isset($_POST['order'])) { 
$order = 'ORDER BY product_name DESC'; 
} else { 
$order=$_POST['order']; 
}

变量$order未设置在if语句之前。因此empty($order)将始终评估为true。我想你在寻找更多的以下内容:

if(empty($_POST['order'])) {
    $order = 'ORDER BY product_name DESC';
} else {
    $order = $_POST['order'];
}

当您想检查$_POST['order']是否有值时,您正在检查$order是否为空或已设置。但是,您不应该直接使用提交的值,但至少要验证它是否是您期望的值。否则,您将使您的应用程序打开以进行SQL注入。

$order = false;
if (empty($_POST['order']))
{
    // validate if $_POST['order'] has a valid value and set $order
}
if (!$order)
{
    // set a default order instead, as there either wasn't a POST-value or an invalid value.
}