动态插入MySQL-PHP组合

动态插入MySQL-PHP组合,php,mysql,html,sql,Php,Mysql,Html,Sql,我有一个自定义html页面,该页面将发布到php变量,然后填充自定义sql查询 function load_table($db, $old_table, $startRow, $nameColumn, $ipColumn, $addressColumn, $cityColumn, $stateColumn, $zipColumn, $countryColumn) { $select = "SELECT $nameColumn, $ipColumn, $addressColumn, $cityCo

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

当所有变量都持有一个值时,它可以完美地工作,但我需要一种动态断言此查询的方法,这样,如果用户缺少一列,即邮政编码不在他们的表中,它仍将运行,而不会破坏查询

将所有变量放入一个数组中,然后执行以下操作:

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, 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
将始终具有一个值,除非另有规定

您可以为其设置默认值:

function load_table($db, $old_table, $startRow, $nameColumn="Default name", $ipColumn, $addressColumn, $cityColumn, $stateColumn, $zipColumn, $countryColumn)
在这种情况下,除非另有规定或您可以使用

$select = "SELECT ".(($nameColumn != '')?$nameColumn.",":"")." .......";
或者你可以使用

$select = "SELECT ".(($nameColumn != '')?$nameColumn.",":"")." .......";

另请参见:

另请参见:

感谢您的回复!这听起来不错,但我担心的是,如果使用默认名称,并且表中没有默认名称,则会发生错误,因为它将尝试查找该列名,但找不到该列名。除非有一个默认名称,我可以给它,这将只是作为一个占位符?谢谢你的回答!这听起来不错,但我担心的是,如果使用默认名称,并且表中没有默认名称,则会发生错误,因为它将尝试查找该列名,但找不到该列名。除非有一个默认的名称,我可以给它,这将只是作为一个占位符?我不熟悉内爆函数。它只是从数组中删除空变量吗?那么这对解决我的问题有什么帮助呢?问题是,如果其中一个变量没有值,sql查询将抛出错误,因为php变量的值为null@user1475765我更新了我的答案,它删除了空值。我不熟悉内爆函数。它只是从数组中删除空变量吗?那么这对解决我的问题有什么帮助呢?问题是,如果其中一个变量没有值,sql查询将抛出错误,因为php变量的值为null@user1475765我已经更新了我的答案,它删除了空值。这是正确的方法。我还没有尝试过,但这是最有意义的!非常感谢!事实上,正如Falci所指出的,使用func_get_args可以改进这一点。这是正确的方法。我还没有尝试过,但这是最有意义的!非常感谢!事实上,正如Falci所指出的,使用func_get_args可以改进这一点。