PDO login.php需要帮助完成

时间:2013-12-19 23:23:37

标签: php html mysql pdo

我是PDO的新手,我需要帮助完成我的login.php的其余代码块,有人可以帮我解决一下吗?

<h1>Login</h1>
<form action="" method="POST">
    <input type="text" name="username" placeholder="username"><br />
    <input type="password" name="password" placeholder="password">
    <input type="submit">
</form>


<?php
    if(isset($_POST['username'], $_POST['password'])){
  try{
    $username = 'root';
    $password = '';
    $conn = new PDO("mysql:host=localhost;dbname=lr;", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $query = $conn->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
    $result->execute($query);

  }  catch(PDOException $e){
    echo 'ERROR', $e->getMessage();
  }
} 
?>

1 个答案:

答案 0 :(得分:0)

prepare语句返回一个对象,可以执行该对象。因此$ query-&gt; execute() - 执行的第一个参数可以是一个数组。或者,您可以首先在同一个$ query对象上使用bindParam函数,而不是传递数组。

无论如何,你在这里:

<?php
    if(isset($_POST['username'], $_POST['password'])){
  try{
    $username = 'root';
    $password = '';
    $conn = new PDO("mysql:host=localhost;dbname=lr;", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $query = $conn->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
    $result = $query->execute(array(':username' => $_POST['username'], ':password' => $_POST['password']));

  }  catch(PDOException $e){
    echo 'ERROR', $e->getMessage();
  }
} 
?>

编辑:让应用程序使用您的根数据库用户也是非常糟糕的做法。从长远来看,您应养成为用户提供特定数据库权限的习惯。假设一个用户只拥有一个数据库的完全权限。