Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按用户跟踪/验证/更新MySQL结果_Php_Mysql - Fatal编程技术网

Php 按用户跟踪/验证/更新MySQL结果

Php 按用户跟踪/验证/更新MySQL结果,php,mysql,Php,Mysql,我有一个时间表数据库,志愿者可以在那里检查他们的班次。我将通过电子邮件向他们发送一个指向页面的链接,在该页面中,他们将电子邮件地址输入到HTML表单中,以访问此信息 是否有一种方法可以跟踪查询哪些电子邮件,以便将时间表链接重新发送给尚未访问数据库的用户 如有必要,我可以在结果中添加一个额外的“确认”复选框,并更新数据库。我喜欢这个想法,但我不确定如何实施(或该行动的术语) 编辑:下面是我用来实现的代码。然而,我没有在确认专栏中得到结果 $db = new mysq

我有一个时间表数据库,志愿者可以在那里检查他们的班次。我将通过电子邮件向他们发送一个指向页面的链接,在该页面中,他们将电子邮件地址输入到HTML表单中,以访问此信息

是否有一种方法可以跟踪查询哪些电子邮件,以便将时间表链接重新发送给尚未访问数据库的用户

如有必要,我可以在结果中添加一个额外的“确认”复选框,并更新数据库。我喜欢这个想法,但我不确定如何实施(或该行动的术语)

编辑:下面是我用来实现的代码。然而,我没有在确认专栏中得到结果

                $db = new mysqli("host", "user", "pass", "db");

    $stmt = $db->prepare('UPDATE volConfirm SET confirmed = TRUE WHERE email = ?');
    $stmt->bind_param('s', $_POST['email']);
    $stmt->execute();

    $stmt = $db->prepare('SELECT * from volConfirm WHERE email = ?');
    $stmt->bind_param('s', $_POST['email']);
    $result = $stmt->get_result();
    while ($row = $result->fetch_array(MYSQLI_NUM)) {
    // construct your output here using $row to access database record
    echo "<h2>" . $row['agreeName'] . "</h2>";
    echo "<p> You have been assigned as a volunteer for:" . $row['position'] . "</p>";
    echo "<p>Your shift times are scheduled for:" . $row['shift_times'] . "</p>";
    echo "<p>Your shift has been confirmed:" . $row['confirmed'] . "</p>";
    }
$db=newmysqli(“主机”、“用户”、“通行证”、“数据库”);
$stmt=$db->prepare('updatevolconfirm SET confirm=TRUE,其中email=?');
$stmt->bind_param('s',$_POST['email']);
$stmt->execute();
$stmt=$db->prepare('SELECT*from volConfirm WHERE email=?');
$stmt->bind_param('s',$_POST['email']);
$result=$stmt->get_result();
而($row=$result->fetch_数组(MYSQLI_NUM)){
//在这里使用$row访问数据库记录来构造输出
回显“$row['agreeName']”;
echo“您已被指定为:“.$row['position']”的志愿者。

”; echo“您的轮班时间安排为:“..row['shift\u times']”“

”; echo“您的班次已确认:“.$row['confirmed']”“

”; }
您需要按照以下思路做一些事情:

  • 向志愿者表中添加新列

    ALTER TABLE Volunteers ADD COLUMN Confirmed BOOLEAN NOT NULL DEFAULT FALSE;
    
  • 让提交页面中的PHP更新该列:

    UPDATE Volunteers SET Confirmed = TRUE WHERE Email = 'foo@bar.com';
    
    在代码段中:

    $db = new mysqli("dbhostname", "username", "password", "dbschema");
    
    $stmt = $db->prepare('UPDATE volConfirm SET confirmed = TRUE WHERE email = ?');
    $stmt->bind_param('s', $_POST['email']);
    $stmt->execute();
    
    $stmt = $db->prepare('SELECT * from volConfirm WHERE email = ?');
    $stmt->bind_param('s', $_POST['email']);
    $result = $stmt->get_result();
    
    while ($row = $result->fetch_array(MYSQLI_NUM)) {
      // construct your output here using $row to access database record
    }
    
  • 在将来的某个时候,获取尚未访问该页面的所有用户的列表:

    SELECT Email FROM Volunteers WHERE Confirmed = FALSE;
    

  • 您需要按照以下思路做一些事情:

  • 向志愿者表中添加新列

    ALTER TABLE Volunteers ADD COLUMN Confirmed BOOLEAN NOT NULL DEFAULT FALSE;
    
  • 让提交页面中的PHP更新该列:

    UPDATE Volunteers SET Confirmed = TRUE WHERE Email = 'foo@bar.com';
    
    在代码段中:

    $db = new mysqli("dbhostname", "username", "password", "dbschema");
    
    $stmt = $db->prepare('UPDATE volConfirm SET confirmed = TRUE WHERE email = ?');
    $stmt->bind_param('s', $_POST['email']);
    $stmt->execute();
    
    $stmt = $db->prepare('SELECT * from volConfirm WHERE email = ?');
    $stmt->bind_param('s', $_POST['email']);
    $result = $stmt->get_result();
    
    while ($row = $result->fetch_array(MYSQLI_NUM)) {
      // construct your output here using $row to access database record
    }
    
  • 在将来的某个时候,获取尚未访问该页面的所有用户的列表:

    SELECT Email FROM Volunteers WHERE Confirmed = FALSE;
    


  • 当用户输入电子邮件时,您可以在表(已访问)中添加一个字段,并将其从0更新为1。您是否收到任何MySQL错误?将第四行更改为
    $result=mysql\u query($query)或die(mysql\u error())。另外,在上面的代码中,应该使用mysql\u real\u escape\u字符串来转义用户输入。从不信任用户输入:)嗨,Daan-我在添加“或死”时没有收到任何错误。(OP中更新的代码)现在我得到了错误“查询为空”-(上面更新的代码)@Commandrea:查看我更新的答案。我使用准备好的语句via来避免SQL注入。前半部分更新表中新的
    确认
    标志,后半部分获取表值,然后根据需要输出。当用户输入电子邮件时,您可以在表中添加一个字段(已访问),将其从0更新为1。您是否收到任何MySQL错误?将第四行更改为
    $result=mysql\u query($query)或die(mysql\u error())。另外,在上面的代码中,应该使用mysql\u real\u escape\u字符串来转义用户输入。从不信任用户输入:)嗨,Daan-我在添加“或死”时没有收到任何错误。(OP中更新的代码)现在我得到了错误“查询为空”-(上面更新的代码)@Commandrea:查看我更新的答案。我使用准备好的语句via来避免SQL注入。前半部分更新表中新的
    确认
    标志,后半部分获取表中的值,然后按您认为合适的方式输出。嘿,Eggy,谢谢!我已经添加了专栏(#1),但是,我应该用什么来替换“用户”?我尝试了我的“volConfirm”表键,但它没有更新数据库。对不起,我的错误<#2中的code>用户
    应该是
    志愿者
    (即表名)。更正。好吧-我这么做了,但它无论如何都不起作用:)我想我遇到了一个问题foo@bar.com“--由于email='$email'(或用户输入的查询),您不希望编写
    ,其中email='$email'
    ,尤其是当
    $email
    的值超出您的控制范围时:“s学校这样做了,他们被烧死了。”。至于为什么它在这个测试用例中不起作用,您可能需要提供更多的信息(您是否得到错误?志愿者表中有什么数据?您能否
    选择
    志愿者好吗?)“神秘”值被称为不安全或“未初始化”变量;它带来了“SQL注入”的风险。这就是你想要的吗?嘿,鸡蛋,谢谢!我已经添加了专栏(#1),但是,我应该用什么来替换“用户”?我尝试了我的“volConfirm”表键,但它没有更新数据库。对不起,我的错误<#2中的code>用户
    应该是
    志愿者
    (即表名)。更正。好吧-我这么做了,但它无论如何都不起作用:)我想我遇到了一个问题foo@bar.com“--由于email='$email'(或用户输入的查询),您不希望编写
    ,其中email='$email'
    ,尤其是当
    $email
    的值超出您的控制范围时:“s学校这样做了,他们被烧死了。”。至于为什么它在这个测试用例中不起作用,您可能需要提供更多的信息(您是否得到错误?志愿者表中有什么数据?您能否
    选择
    志愿者好吗?)“神秘”值被称为不安全或“未初始化”变量;它带来了“SQL注入”的风险。这就是你想要的吗?