使用PDO MSSQL语句中的会话变量获取另一列


Use session variable in PDO MSSQL Statement to get another column

我正在尝试了解更多关于PHP、PDO、SQL和会话变量的信息。我相信有更好的方法可以做到这一点,但我希望从我的尝试中吸取教训。

我正在获取一个作为电子邮件的会话变量,并希望在PDO语句中使用该变量来获取同一表中的ID。以下是我到目前为止所拥有的。谢谢

<?php
require_once ('PasswordVerifySession.php');
$dsn = 'sqlsrv:Server=.database.windows.net;Database=';
$uname = '';
$pwd = '';
$options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
$ticketNum = $_POST["txtTicket"];
$Email = $_SESSION["contEmail"]
try {
    $db = new PDO($dsn, $uname, $pwd, $options);
    $q = $db->prepare("SELECT contId FROM tblContestants WHERE Email = ????);
    $q->bindValue(':contId', $contID);
    $q->execute();
    $ContId = $q->fetch();
    $ContId = $ContId['contId'];
}
catch (PDOException $e) {
$error_message = $e->getMessage();
echo("<p>Database error: $error_message</p>");
exit();
}  

?>

我建议您快速查看手动

$Email = $_SESSION["contEmail"]
try {
    $db = new PDO($dsn, $uname, $pwd, $options);
    $q = $db->prepare("SELECT contId FROM tblContestants WHERE Email = :email");
    $q->bindValue(':email', $Email);
    $q->execute();
    $row = $q->fetch(PDO::FETCH_ASSOC);
    $ContId = $row['contId'];
}
<?php
require_once ('PasswordVerifySession.php');
$email = ...;//you obtain the email from somewhere
try{
    $db = new PDO($dsn, $uname, $pwd, $options);
    $q = $db->prepare("SELECT contId FROM tblContestants WHERE Email = :email");
    $q->bindValue(':email', $email);
    $q->execute();
    $ContId = $q->fetch(PDO::FETCH_ASSOC);
    $ContId = $ContId['contId'];
}
catch (PDOException $e) {
    $error_message = $e->getMessage();
    echo("<p>Database error: $error_message</p>");
    exit();
}  
?>