【问题标题】:Why can't I use data after inserting to database with PHP为什么我用 PHP 插入数据库后不能使用数据
【发布时间】:2013-05-04 19:28:15
【问题描述】:

问题:插入数据库后无法获取email值。

已编辑:

固定: 我的问题是$to = $_POST['$email']; 赋予了错误的价值。它应该是$to = $_POST['email'];。 问题是因为我有 $ 价值。

这就是我创建激活码的方式:

$activation = sha1(uniqid(rand(), true));

这就是我声明我的数据库插入查询的方式:

$query = "INSERT INTO users (activation, email) VALUES (:activation, :email)"; 

在这里我为我的插入查询填充参数:

$query_params = array(
  ':activation' => $activation,
  ':email' => $_POST['email']
); 

...下面是我通过执行查询和发送电子邮件将数据添加到数据库的方法:

    try 
    { 
        // Execute the query to create the user 
        $stmt = $db->prepare($query); 
        $stmt->execute($query_params);

        if ($stmt->rowCount() > 0) { //If the Insert Query_params was successfull.
            echo 'even gets to  here.';


            // Send the email:
            $to = $_POST['email'];
            $subject = 'Registeerimis kinnitus';
            $from = 'From: mymail@gmail.com';
            $WEBSITE_URL = "http://mysite.com";
            $message = " Kasutaja aktiveerimiseks, palun vajutage aadressile:\n\n";
            $message .= $WEBSITE_URL . "/activate.php?email=" . urlencode($to) . "&key=".$activation;
            mail($to, $subject, $message);
        }
    } 
    catch(PDOException $ex) 
    { 
        // Note: On a production website, you should not output $ex->getMessage(). 
        // It may provide an attacker with helpful information about your code.  
        die("Failed to run query: " . $ex->getMessage()); 
    }

插入数据库有效。

提前感谢您的帮助。

【问题讨论】:

  • 或者我是否需要在插入后从数据库中读取数据以再次使用?
  • 无论如何都要使用这个 sha1(uniqid(mt_rand(), true));
  • okey tnx 的建议
  • try..catch 块相关的$activation$email 声明在哪里?
  • 我不能在声明之前给出值吗?那 $activation = sha1(uniqid(rand(), true));在插入数据库之前声明,因为对于活动帐户,您需要单击该链接。这些代码段在同一个文件中。

标签: php mysql email send


【解决方案1】:
'&key='$activation;
'&key=' . $activation;

在 '&key=' 和 $activation 之间缺少一个点;

【讨论】:

  • 我的错,但它仍然没有给那里提供激活值。
【解决方案2】:

试试这个

  $message .= $WEBSITE_URL . "/activate.php?email=" . urlencode($email) . "&key=".$activation;

无论如何使用这个sha1(uniqid(mt_rand(), true));

【讨论】:

  • 是的,我看到了那个点,但我的问题更多是它没有得到电子邮件发送到哪里。所以mby只有一种方法吗?插入数据库后,是否需要阅读数据库中的电子邮件和激活码才能获取这些值?示例:插入数据库电子邮件,然后我使用相同的命令将电子邮件地址获取到 mail() 函数。它不会将电子邮件传递到那里。那是我的问题:(
  • @Markus 你试过我的代码了吗?将其复制粘贴到您的代码中。并尝试
  • 不,因为我知道我在 $activation 之前错过了那个点;但我现在的问题是我无法获得电子邮件价值。得到激活的工作。它也把它放在链接中。现在我唯一的问题是我如何获得电子邮件价值。它在数据库中很好地插入了我的电子邮件值,但是如果我想以与为数据库赋予值相同的方式使用它,它就不起作用了。
  • w8 sec 我想我必须做什么 mby,给我 1 分钟测试一下。我想我的问题是我没有电子邮件值,但我仍然应该向我的电子邮件发送电子邮件,因为对于 mail() 函数,如果它传递到那里,我会给出正确的值。
  • 好吧,我将 ' 替换为 ",但我认为它无法修复我的发送功能以获取电子邮件值。
猜你喜欢
  • 1970-01-01
  • 2016-08-05
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
相关资源
最近更新 更多