0

我有一个自定义 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;
}

当所有变量都保存一个值时,它工作得很好,但我需要一种动态断言这个查询的方法,这样如果用户缺少一列,即邮政编码不在他们的表中,它仍然会运行而不会破坏查询.

4

5 回答 5

2

或者你可以使用

$select = "SELECT ".(($nameColumn != '')?$nameColumn.",":"")." .......";
于 2012-07-03T18:24:19.327 回答
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 回答
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 回答
1

另见:http ://br2.php.net/manual/en/function.func-get-args.php

于 2012-07-03T18:26:06.593 回答
0

你可以给它一个默认值:

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

在这种情况下$nameColumn,除非另有说明,否则将始终有一个值

于 2012-07-03T18:22:24.060 回答