簡體   English   中英

PDO prepare()錯誤PHP / MySQL

[英]PDO prepare() error Php / Mysql

的PHP

session_start(); 
$username = $_POST['regduser']; 
$userpass = md5($_POST['regdpass']); 
$sql = $sql->prepare("SELECT * from Students WHERE regduser='$username' and regdpass='$userpass'");
$sql->bindParam(':username', $username);
$sql->bindParam(':userpass', $userpass);
$stmnt->execute();
$result = mysql_query($sql); 
if (mysql_num_rows($result)!= 1) { 
 $error = "Login failed"; 
 #include "loginform.php"; 
} else { 
    echo "<h1>exists</h1>";
 #$_SESSION['regduser'] = "$username"; 
 #$_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; 
 // any other data needed to navigate the site or 
 // to authenticate the user can be added here 
 #include "membersection.php"; 
}

?>

HTML:

<form action="inc/check_regUsr.php" method="post" id="userLogon">
    <div class="field required">
        Username: <input type="text" name="regduser" tabindex="1" /><br />
        </div>
        <div class="field required">
        Password: <input type="password" name="regdpass" tabindex="2" /><br />
        </div>
        <input type="submit" name="submitUser" />
</form>

致命錯誤:在第9的非對象上調用成員函數prepare(),該行是:

$sql = $sql->prepare("SELECT * from Students WHERE regduser='$username' and regdpass='$userpass'");

我在這里做錯了什么?

哦,從哪里開始...

  1. $sql在哪里建立數據庫連接?
  2. 在准備好的語句中使用:placeholdername ,而不是$placeholdername
  3. 您正在覆蓋$sql ,破壞了數據庫連接(如果有的話)。
  4. $stmnt不存在
  5. mysql_query在那里做什么? 您有3個選項: mysqlmysqliPDO 堅持下去,不要混搭。

$sql根本不是對象。 它必須是一個對象,例如來自PDO的對象,例如$sql = new PDO(…)

此外,你應該使用MD5哈希的密碼,請參閱安全散列和鹽的PHP密碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM