0

php変数に投稿するカスタムhtmlページがあり、カスタムsqlクエリに入力します。

function load_table($db, $old_table, $startRow, $nameColumn, $ipColumn, $addressColumn, $cityColumn, $stateColumn, $zipColumn, $countryColumn)
{
$select = "SELECT $nameColumn, $ipColumn, $addressColumn, $cityColumn, $stateColumn, $zipColumn, $countryColumn FROM " .$old_table.";";
$q = mysqli_query($db, $select);

return $q;
}

すべての変数が値を保持している場合は完全に機能しますが、このクエリを動的にアサートする方法が必要です。これにより、ユーザーに列がない場合、つまり郵便番号がテーブルにない場合でも、クエリを台無しにすることなく実行できます。 。

4

5 に答える 5

2
$array = array();

if ($nameColumn)
    $array[] = $nameColumn;
if ($ipColumn)
    $array[] = $ipColumn;

// etc...

$cols = implode(',', $array);

if ($cols)
{
    $select = "SELECT $cols FROM $old_table;";
    $q = mysqli_query($db, $select);
    return $q;
}
于 2012-07-03T18:24:59.810 に答える
2

またはあなたは使用することができます

$select = "SELECT ".(($nameColumn != '')?$nameColumn.",":"")." .......";
于 2012-07-03T18:24:19.327 に答える
1

参照: http: //br2.php.net/manual/en/function.func-get-args.php

于 2012-07-03T18:26:06.593 に答える
1

すべての変数を配列に入れてから、次のようにします。

function load_table($db, $old_table, $startRow, array $columns) {
    $columns = array_filter($columns, 'strlen'); // removes empty values
    $select = "SELECT " . implode(",", $columns) . " FROM " .$old_table.";";
    $q = mysqli_query($db, $select);
    return $q;
}
于 2012-07-03T18:22:14.540 に答える
0

デフォルトを指定できます。

function load_table($db, $old_table, $startRow, $nameColumn="Default name", $ipColumn, $addressColumn, $cityColumn, $stateColumn, $zipColumn, $countryColumn)

この場合$nameColumn、特に指定がない限り、常に値があります。

于 2012-07-03T18:22:24.060 に答える