php – bindParam和bindValue不起作用?

我正在尝试建立一个注册/登录系统.要检查是否未使用用户名和电子邮件地址,我使用此:

$username = $_POST['uLogin'];
    $usernameLC = strtolower($username);
    $query1 = $db0->query("SELECT userLogin FROM tbuser WHERE userLogin=':login';");
    $query1->bindValue(":login", $usernameLC, PDO::PARAM_STR);

但它不起作用.我可以使用相同的用户名创建尽可能多的用户.通过扩展,它也不会让我连接到网站,因为它没有绑定值或任何东西,所以它无法将我的用户名与数据库中的用户名进行比较.

当我像这样使用它时,验证用户名是否有效

$username = $_POST['uLogin'];
    $usernameLC = strtolower($username);
    $query1 = $db0->query("SELECT userLogin FROM tbuser WHERE userLogin='$usernameLC';");

但这不是正确的方法:/

有人可以帮忙吗? 🙂

最佳答案
首先,如果您要准备,请使用 – > prepare(),并删除命名占位符中的引号,它们不需要具有:

$query1 = $db0->prepare("SELECT userLogin FROM tbuser WHERE userLogin= :login");

然后$query1-> execute(),绑定后的预处理语句,所以全部:

$username = $_POST['uLogin'];
$usernameLC = strtolower($username);
$query1 = $db0->prepare('SELECT userLogin FROM tbuser WHERE userLogin = :login'); // prepare
$query1->bindValue(':login', $usernameLC, PDO::PARAM_STR); // bind
$query1->execute(); // execute

转载注明原文:php – bindParam和bindValue不起作用? - 代码日志