【问题标题】:Cannot insert data into sql table无法向sql表中插入数据
【发布时间】:2013-10-21 14:19:47
【问题描述】:

我正在编写一个脚本,将忘记密码的链接发送到用户的电子邮件地址。我创建了一个名为“recoveryemails_enc”的表,它将保存用户的电子邮件地址、密钥和一个扩展日期。用户电子邮件地址是从我的“用户”表中提取的。当我运行脚本时,它会创建带有密钥和到期日期的正确链接,但数据没有被插入到数据库中。下面是我的代码。我不确定我做错了什么。

$result = mysql_query("SELECT email from users WHERE email = '$email' AND active='1'") or die(mysql_error());       
    $expFormat = mktime(date("H"), date("i"), date("s"), date("m")  , date("d")+3, date("Y"));
    $expDate = date("Y-m-d H:i:s",$expFormat);
    $key = md5($email . rand(0,10000) .$expDate);                    
    $no_of_rows = mysql_num_rows($result);                    
    if ($no_of_rows > 0) { 
        $result = mysql_fetch_array($result);      
        $query = mysql_query("INSERT INTO recoveryemails_enc(email, Key, expDate) VALUES('$email', '$key', '$expDate')");
        $passwordLink = "<a href=\"?a=recover&email=" . $key . "&u=" . urlencode(base64_encode($email)) . "\">http://www.mywebsite.com/forgotpw.php?a=recover&email=" . $key . "&u=" . urlencode(base64_encode($email)) . "</a>"; 

我用来创建表的编辑命令:

CREATE TABLE IF NOT EXISTS `recoveryemails_enc` (  

ID bigint(20) unsigned zerofill NOT NULL auto_increment,
email bigint(20) NOT NULL,
Key varchar(32) NOT NULL,
expDate datetime NOT空,
主键 (ID)
) 引擎=InnoDB 默认字符集=latin1 AUTO_INCREMENT=1 ;

【问题讨论】:

  • 为什么要使用 PHP 脚本将数据插入到标记为 android 的数据库中?
  • 您是否尝试直接执行您的查询?
  • 您能提供您的表架构吗?不匹配的列名/错别字也会阻止插入。如果关闭错误报告,您将不会看到有用的消息。
  • 作为旁注,您将节省调试时间和脚本处理时间,方法是先创建您的 URL $url = '?blabla='.$key 等,然后将其传递给您的 &lt;a&gt;:$passwordLink = '&lt;a href="'.$url.'"&gt;'.$url.'&lt;/a&gt;'
  • 学习使用mysql_error()函数来检查你的sql语句是否失败。它可能会为您节省大量调试时间

标签: php mysql


【解决方案1】:

问题在于 mysql 查询,试试这个:

$query = mysql_query("INSERT INTO recoveryemails_enc(`email`, `Key`, `expDate`) VALUES('".$email."', '".$key."', '".$expDate."')");

【讨论】:

    【解决方案2】:

    您的问题在于查询本身。

    $query = mysql_query("INSERT INTO recoveryemails_enc(email, Key, expDate) VALUES('$email', '$key', '$expDate')");
    

    密钥是受保护的字

    试试这个查询

    $query = mysql_query("INSERT INTO recoveryemails_enc(`email`, `Key`, `expDate`) VALUES('$email', '$key', '$expDate')");
    

    【讨论】:

      猜你喜欢
      • 2019-01-21
      • 1970-01-01
      • 2017-10-31
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 2013-02-05
      相关资源
      最近更新 更多