这似乎是一个非常愚蠢的问题,但我不知道是否可能。我正在尝试编写如下函数:
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());
}
有没有办法做到这一点?
答案 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
输入。