0

URLパラメータのリストから配列を作成して、データベースとやり取りしようとしています。基本的に私は異なることをするいくつかの機能を持っています。(挿入、更新など)したがって、具体的に何をしようとしているのかによっては、データベース内のすべての列が常に必要になるとは限りません。

したがって、渡される可能性のある次の5つの潜在的なパラメーターがあるとします:id、gr、bl、yw、re

新しい行を挿入する場合、5つの列すべてに何らかの値が必要です。bl列を更新すると言う場合は、idパラメーターとblパラメーターのみを渡します。

だから私はクエリ文字列を構築するためにこれを行っています(実際のコードは単なる例ではありません):

foreach($_GET as $key => $value) {
$key = strtolower($key);
if (preg_match($acceptedGETS,$key)) $$key = $value;
}

$table_col = array (
    'p_id' => $_GET['id'],
    'p_gr' => $_GET['gr'],
    'p_bl' => $_GET['bl'],
    'p_yw' => $_GET['yw'],
    'p_re' => $_GET['re']);

$vstring = implode(',' , $table_col);

これで、すべての変数キーに値がある(またはNULLでない)限り、これは完全に機能します。私の質問は、配列から文字列を作成する方法ですが、渡された値を取得しないキーを除外します。現在、キーに値がない場合、次のようになります。

URL:http ://www.mysite.com/myscript.php?id=4&re= 9で取得できます:

4 、、、、 9

4,9を取得する必要があるとき

ありがとう!

4

3 に答える 3

0

を使用する$get = array_filter($_GET)と、空の値またはnull値が削除されます。

于 2012-04-16T22:06:20.437 に答える
0

試す

$vstring = "";
$acceptedGETS = array("id", "gr", "bl", "yw", "re");
$values = array();
foreach ($_GET as $key => $value)
{
    $k = strtolower($key);
    if (!in_array($k, $acceptedGETS))
        continue;
    $values[$k] = $value;
}
$vstring = implode(",", $values);
于 2012-04-16T22:05:02.070 に答える
-1

filter_input_arrayこれは、フィルターのセットだけを使用する別の方法です

$args = array(
    'id'    => FILTER_VALIDATE_INT,//if it is an integer
    'gr'    => FILTER_SANITIZE_STRIPPED,//in case it is a string
    'bl'    => FILTER_SANITIZE_STRIPPED,
    'yw'    => FILTER_SANITIZE_STRIPPED,
    're'    => FILTER_SANITIZE_STRIPPED,
);

//Filter array values to avoid bad data if nothing found NULL returned
$myInputs = filter_input_array(INPUT_GET, $args);

//if it is an array join it with coma
if(is_array($myInputs))
    $myInputs = implode(',', $myInputs);
于 2012-04-16T22:17:18.727 に答える