我有一个自定义的html页面,它发布到php变量,然后填写自定义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;
}
当所有变量都保存一个值时,它可以完美运行,但我需要一种方法来动态断言此查询,以便如果用户缺少列,即邮政编码不在他们的表中,它仍然会运行而不会破坏查询。
$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;
}
或者
你可以使用
$select = "SELECT ".(($nameColumn != '')?$nameColumn.",":"")." .......";
参见:http://br2.php.net/manual/en/function.func-get-args.php
将所有变量放在一个数组中,然后执行以下操作:
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;
}
您可以为其指定默认值:
function load_table($db, $old_table, $startRow, $nameColumn="Default name", $ipColumn, $addressColumn, $cityColumn, $stateColumn, $zipColumn, $countryColumn)
在这种情况下,除非另有说明,否则$nameColumn
将始终具有一个值