【问题标题】:call a function by omitting function argument通过省略函数参数来调用函数
【发布时间】:2017-05-22 13:23:56
【问题描述】:
function givemeposts($user, $pos){
$sql = "select * from posts where user ='" . $user . "' and pos = '" . $pos . "' order by inde";    
...

givemeposts('public', 'home01'); // this works as usual

现在我需要调用上述函数,但没有$pos 参数,即无论$pos 值是什么。

类似:

givemeposts('public', whatever);

有什么办法吗?

【问题讨论】:

  • 您可以将参数设为可选,例如function givemeposts($user, $pos = ''){
  • 你的代码容易被sql注入
  • @Ollaw,使用 SELECT 语句进行 sql 注入!?请给我一个例子吗?
  • @Qirel,那么,如何调用pos 列中的函数WHATEVER?该列不为空!

标签: php


【解决方案1】:

你可以使用默认参数:

function givemepost( $user , $pos=NULL ){
    if($pos==NULL){
        //some code
    }lese{
         $sql = "select * from posts where user ='" . $user . "' and pos = '" . $pos . "' order by inde";    
    }
}

这样你可以用一个参数调用函数,并在 if 分支中设置函数必须做什么。

【讨论】:

    【解决方案2】:

    在 PHP 中你可以设置default values for arguments

    默认值必须是常量表达式,而不是(例如)变量、类成员或函数调用。

    请注意,使用默认参数时,任何默认值都应位于任何非默认参数的右侧;否则,事情将无法按预期进行。

    如果您这样做,$pos 的默认值将是 ''(一个空字符串):

    function givemeposts($user, $pos = ''){
    

    或者您可以使用空字符串以外的其他值,无论您想要什么值:

    function givemeposts($user, $pos = 'SomeValue'){
    

    然后你可以像这样简单地调用你的函数:

    givemeposts($user);
    

    【讨论】:

    • 那么,如何调用pos 列中的函数WHATEVER?该列不为空!
    【解决方案3】:

    你可以试试这个:

    function givemeposts($user, $pos = '')
    {
        if(!empty($pos)) {
            $pos = "AND pos = '" . $pos . "'";
        }
        $sql = "SELECT * FROM posts WHERE user ='" . $user . "' $pos ORDER BY inde";
    
    }
    
    givemeposts('public'); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多