【发布时间】:2016-12-16 14:03:16
【问题描述】:
我是 PHP 新手,但通常能够解决大多数问题,但这个问题已经解决了我。
我正在尝试使用单个提交按钮创建一个时事通讯注册(单个字段)。我可以正常工作,发送一封电子邮件并将表单数据插入我的表格中。但是,我想添加功能以向注册人发送确认电子邮件。我做了广泛的研究,我知道这背后的方法,但我的代码只是没有将数据输入到用于存储确认信息的第二个表中。
我有 2 张桌子: 表 1 中名为“newsletter”的列是:
idmail,emailaddress,datetime,state
idmail 设置为 AUTO_INCREMENT
表 2 中名为“确认”的列是:
idconfirm,emailaddress,confirmkey
这是我的代码(我省略了后面的电子邮件部分,因为一切正常):
//connect to database
include('admin/connection.php');
$email = mysqli_real_escape_string($dbc, $_POST['email']);
//check if value exists in table
$result = mysqli_query($dbc, "SELECT emailaddress FROM newsletter WHERE emailaddress = '$email'");
if (mysqli_num_rows($result)==0) {
//Insert value into database
$query1 = mysqli_query($dbc, "INSERT INTO newsletter(emailaddress, datetime, state) VALUES('$email','$now','0')");
mysqli_query($dbc, $query1);
// Get ID of last record
$id = mysqli_insert_id($dbc);
//Create a random key
$hash = $email.date('mY');
$hash = md5($hash);
//Insert value into database
$query2 = mysqli_query($dbc, "INSERT INTO confrim(idconfirm, emailaddress, confirmkey) VALUES('$id','$email','$hash')");
mysqli_query($dbc, $query2);
当我提交电子邮件地址时,第一个表格已正确填充。
这里的目标是将在第一个 INSERT INTO 查询中创建的自动 ID 放入一个变量中,然后将其添加到名为“idconfim”的第二个表列中。
我试过了:
echo $id;
echo $email;
echo $hash;
并且所有变量都包含正确的信息。
有人有什么想法吗? 我已经尝试在此处列出很多内容,但我对此进行了研究,但我只是不知道我哪里出错了。
提前致谢。
【问题讨论】:
-
首先:
INSERT INTO confrim->INSERT INTO confirm -
直接在phpmyadmin上运行查询并查看消息。
-
只是Spolling Irror
INSERT INTO **confrim** -
您没有检查任何 mysqli_ 函数是否有错误 将
ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);添加到脚本顶部。这将强制任何mysqli_错误生成一个您不能错过或忽略的异常。
标签: php insert-into mysql-insert-id