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

时间:2013-11-27 17:15:33

标签: php variables default

如果未提交表单(值来自哪里),我正在尝试设置变量值。下面我有:

if (empty($order)) { 
   $order = 'ORDER BY product_name DESC'; 
} 

else { $order=$_POST['order']; }

这始终将值设置为“ORDER BY product_name DESC”并忽略该表单。可能只是一个小问题,但我无法挑选出来。

有什么想法吗?

谢谢!

6 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

使用isset

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

答案 2 :(得分:0)

这是因为$ order总是空的。所以去弄清楚为什么$ order永远不会被设置或者值为null或空字符串。或者使用isset($ order)。

答案 3 :(得分:0)

尝试使用isset

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

当您要检查$ _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.
}