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個の個別の入力に対してforeachループをn回実行できると思いますが、クエリでそれらを効果的に使用する方法がわかりませんでした。配列を作成して、何らかの方法でクエリに入力として渡すことはできますか?

ありがとう

アルダ

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 に答える