【问题标题】:Variable input arguments in PHPPHP中的可变输入参数
【发布时间】:2013-04-11 19:10:00
【问题描述】:

我有一个半 PHP/半算法的问题。我将有 0 到 4 之间的随机输入。它们将用于相同的查询,例如

  <?php  SELECT * FROM `table` WHERE inputs in (input0,input1,input2)  //for 3 inputs
          SELECT * FROM `table` WHERE inputs in (input0,input1)  //for 2 inputs
         //do nothing for zero inputs ?>

我相信这是起点。

 <?php
 function myfunc(){
   $args = func_get_args();
  foreach ($args as $arg)
   echo $arg."/n";
 }
  myfunc('hello', 'world', '.');
      ?>

现在我想我可以为 n 个单独的输入运行 n 次 foreach 循环,但我不知道如何在查询中有效地使用它们。我可以创建一个数组并以某种方式将其作为输入传递给查询吗?

谢谢

阿尔达

【问题讨论】:

  • 你试过implode(",",func_get_args())吗?
  • 如果您将数组而不是多个标量参数传递给函数,会不会容易得多?坦率地说,可变参数比使用它们的好主意更频繁地出现在脑海中。

标签: php variables input


【解决方案1】:

你也可以给你的函数传递一个数组:

function myfunc(array('input2','input1'));

但是用func_get_args回答你的问题:

<?php
function buildQuery() {
    $args = func_get_args();

    $q = implode(', ',$args);

    return 'SELECT * FROM `table` WHERE inputs in ('.$q.');';
}

echo buildQuery('input0','input1');
?>

输出:

SELECT * FROM table WHERE 输入 (input0, input1);

【讨论】:

    【解决方案2】:

    在查询中使用输入之前,不要忘记先清理输入。试试这个

    $i = impode(", ", array_map(function($a) {
       return '"' . mysql_real_escape_string($a) . '"';
    }, func_get_args());
    

    然后像这样用$i的内容替换(input0,input1)

    $q = "SELECT * FROM `table` WHERE inputs in " . $i;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多