2

我有一个半 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 循环,但我无法弄清楚如何在查询中有效地使用它们。我可以创建一个数组并以某种方式将其作为输入传递给查询吗?

谢谢

阿尔达

4

2 回答 2

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 tableWHERE 输入 (input0, input1);

于 2013-04-11T19:18:16.053 回答
0

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

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

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

$q = "SELECT * FROM `table` WHERE inputs in " . $i;
于 2013-04-11T19:20:03.130 回答