我正在为一个网站制作联系表格,我不想立即回复,所以我将客户的电子邮件地址存储在一个表中,我可以选择何时回复电子邮件以及回复谁。
为了做到这一点,我使用了这个脚本,我已经写了
<?php
/**
New Users:
---------------------------
CREATE TABLE `new_users` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`names` VARCHAR(50) NULL DEFAULT NULL,
`email_address` VARCHAR(50) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB;
Email Outbox:
---------------------------
CREATE TABLE `outgoing_emails` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`names` VARCHAR(50) NULL DEFAULT NULL,
`email_address` VARCHAR(50) NULL DEFAULT NULL,
`email_message` VARCHAR(50) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
*/
$con=mysqli_connect("localhost","root","123456","sms_enterprise");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM new_users");
while($row = mysqli_fetch_array($result)) {
$message = 'Hello _names , welcome to Axel Mining Company.Kindly visit our drilling section.';
$new_message = preg_replace ('/_names/', $row['names'],$message);
$query = "INSERT INTO outgoing_emails (names,email_address,email_message)SELECT names,email_address,$new_message FROM new_users";
$con->query($query);
echo $new_message ."<br/>";
}
//$mysqli_close($con);
?>
我想通过使用preg_replace()
将文本_names
替换为数据库中的值来个性化我发送的每封电子邮件。
当i echo
为$new_message
变量时,将正确进行替换,但不会向表outgoing_emails
中插入任何值。
$new_message
给了我这个
Hello ben alyman , welcome to Axel Mining Company.Kindly visit our drilling section.
Hello kyle , welcome to Axel Mining Company.Kindly visit our drilling section.
脚本没有将数据插入outgoing_emails
表的原因是什么?。
$new_message
需要引用。
$query = "INSERT INTO outgoing_emails (names,email_address,email_message)
SELECT names,email_address,'".$new_message."' FROM new_users";
并增加您的列长度。当要插入的消息的字符数为80+时,您当前正在使用50
。
插入时也应该小心,避免使用'
和'
等字符,因为SQL会开始抱怨,所以需要转义插入的数据。
将错误报告添加到文件顶部,这将有助于生产测试。
error_reporting(E_ALL);
ini_set('display_errors', 1);
以及CCD_ 12至CCD_。
请使用准备好的语句,或者使用PDO和准备的语句。它们更容易使用,使用起来更安全。
尝试:
INSERT INTO table1 ( column1 )
SELECT col1
FROM table2
这适用于:
Oracle
MS SQL Server
MySQL
Postgres
SQLite v3
TeraData
DB2
SyBase
正如我在谷歌上的第一次点击所看到的那样。
试试这个-
$query = 'INSERT INTO outgoing_emails(names, email_address, email_message)
SELECT new_users.names, new_users.email_address, "$new_message"
FROM new_users'
要将column1从table1复制到column1 table2,代码运行良好:
$sql = "INSERT INTO table2 (column1) SELECT column1 FROM table1";
(mysqli_query($conn, $sql)