Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置变量值(如果为空)(PHP)_Php_Variables_Default - Fatal编程技术网

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

设置变量值(如果为空)(PHP),php,variables,default,Php,Variables,Default,如果表单未提交(值的来源),我将尝试设置一个变量值。以下我有: if (empty($order)) { $order = 'ORDER BY product_name DESC'; } else { $order=$_POST['order']; } 这将始终将值设置为“按产品订购\u name DESC”,并忽略表单。可能只是一个小问题,但我不能挑出它 有什么想法吗 谢谢大家! 使用isset if (isset($order) && empty($order

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

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

else { $order=$_POST['order']; }
这将始终将值设置为“按产品订购\u 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'];
}

当您想检查$\u 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.
}

$order
显然总是空的。在您尝试使用它之前,您确定它已设置好吗?同样,你的代码是不安全的,因为它对sql注入非常开放。可爱的漏洞…使用准备好的语句来保护你的应用程序免受sql注入。就是这样!谢谢大家!@没问题。快乐的编码伙伴!:)
$order = isset($_POST['order']) ? $_POST['order'] : 'ORDER BY product_name DESC';