我想对数据库运行查询,并测试用户提交的信息是否与数据库中的信息相同。
$name = $_POST["name"];
$pass = $_POST["pass"];
使用PDO连接到数据库后,请执行以下操作:
$q1= $conn->prepare("SELECT username FROM users WHERE username=?");
$q1->execute([$name]);
$sql_name = $q1->fetchColumn();
$q2= $conn->prepare("SELECT password FROM users WHERE username=?");
$q2->execute([$name]);
$sql_pass = $q2->fetchColumn();`
然后,我检查用户输入是否与数据库匹配
if ($sql_name == $name) {
echo "Username correct! <br>";
if ($sql_pass == $pass) {
$_SESSION['user'] = $name;
$_SESSION['pass'] = $pass;
header('Location: profile.php');
} else {
echo "Password incorrect!";
}
} else {
echo "Check your info!";
}
这正常工作,并且用户被转发到名为“ profile.php”的页面。
问题是,如果我想用这样的函数替换代码的中间部分:
function selectFrom($column, $table, $prop, $cond)
{
$q= $conn->prepare("SELECT ? FROM ? WHERE ?=?");
$result = $q->execute([$column, $table, $prop, $cond]);
echo $result->fetchColumn();
}
$sql_name = selectFrom('username', 'users', 'username', $name);
$sql_pass = selectFrom('password', 'users', 'username', $name);
我的代码的if ($sql_name == $name)
部分无效。为什么会这样?