Php 如何生成令牌并创建要发送到电子邮件的url
我正在为学生注册页面写脚本,学生输入他/她的学生id,如果存在,则检索他/她的电子邮件并生成令牌,将令牌插入数据库,然后将带有令牌和id的注册url链接发送到学生的电子邮件。由于我是php和mysql的初学者,如何获得该链接。 我哪里出了问题Php 如何生成令牌并创建要发送到电子邮件的url,php,mysql,pdo,Php,Mysql,Pdo,我正在为学生注册页面写脚本,学生输入他/她的学生id,如果存在,则检索他/她的电子邮件并生成令牌,将令牌插入数据库,然后将带有令牌和id的注册url链接发送到学生的电子邮件。由于我是php和mysql的初学者,如何获得该链接。 我哪里出了问题 <?php error_reporting(1); session_start(); include 'includes/connect.php'; include 'includes/tokengenerator.p
<?php
error_reporting(1);
session_start();
include 'includes/connect.php';
include 'includes/tokengenerator.php';
if ($_POST["Submit"] == "Submit") {
$stu_id = $_POST['stu_id'];
$sql = "SELECT email FROM people WHERE stu_id = :stu_id";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':stu_id', $stu_id);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if (!empty($result)) {
$email = $result['email'];
//echo $email;
//exit();
for ($i = 1; $i <= 2; $i++) {
$token = generateToken();
//echo $token;
$email = $result['email'];
$sql = "INSERT INTO students (token) VALUES ($token) WHERE email = :email";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(
':token' => $token,
));
$result1 = $stmt->fetch(PDO::FETCH_ASSOC);
}
} else {
echo 'Please Contact principal for student ID';
}
}
?>
您在查询中绑定了错误的值:
:token
vs:email
实际上应该有两个占位符并绑定这两个值
正如@Saty正确指出的,在INSERT
语句中不能有WHERE
子句:
$sql = "INSERT INTO students (token, email) VALUES (:token, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(
':token' => $token,
':email' => $email
));
或者您可能需要一个UPDATE
语句而不是INSERT
:
$sql = "UPDATE students SET token = :token WHERE email = :email";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(
':token' => $token,
':email' => $email
));
您在查询中绑定了错误的值:
:token
vs:email
实际上应该有两个占位符并绑定这两个值
正如@Saty正确指出的,在INSERT
语句中不能有WHERE
子句:
$sql = "INSERT INTO students (token, email) VALUES (:token, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(
':token' => $token,
':email' => $email
));
或者您可能需要一个UPDATE
语句而不是INSERT
:
$sql = "UPDATE students SET token = :token WHERE email = :email";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(
':token' => $token,
':email' => $email
));
使用
updatequery
而不是insert
我按照你的建议这样做了,但是它抛出了一个语法错误,说WHERE email=?'如何创建一个带有令牌和id的url,并使用phpmailerUseupdatequery
而不是insert
我按照你的建议那样做了,但是它抛出了一个语法错误,说WHERE email=?“如何创建带有令牌和id的url并使用phpmaileri发送邮件我能够更新令牌,非常感谢,但是我如何使用令牌和id构建url并将url链接发送到该电子邮件?我能够更新令牌,非常感谢,但是我如何使用令牌和id构造URL并将URL链接发送到该电子邮件?