在函数

时间:2017-12-22 21:07:38

标签: php function

这似乎是一个非常愚蠢的问题,但我不知道是否可能。我正在尝试编写如下函数:

function checkDuplicates($input) {
    $result = pg_query('SELECT username FROM accounts WHERE LOWER(username)=\''.strtolower(pg_escape_string($input)).'\'') or exit(pg_last_error());
}

我希望将“username”替换为传入的变量的名称。例如,如果我调用checkDuplicates($email),我基本上需要调用以下函数:

function checkDuplicates($email) {
    $result = pg_query('SELECT email FROM accounts WHERE LOWER(email)=\''.strtolower(pg_escape_string($email)).'\'') or exit(pg_last_error());
}

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您需要将列作为第二个参数传递。将参数变量名称从$ input更改为$ email实际上会影响您调用函数的方式。

您可以这样做:

function checkDuplicates($col, $val, $return_col) {
    $result = pg_query('SELECT '.$return_col.' FROM accounts WHERE LOWER('.$col.')=\''.strtolower(pg_escape_string($val)).'\'') or exit(pg_last_error());
}

当您执行此操作时,请保持通常的SQL注入危险。您可能希望通过白名单等运行$col$return_col输入。