我正在为网站制作一个联系表格,我不想立即回复,所以我将客户的电子邮件地址存储在一个表格中,我选择何时回复电子邮件以及回复谁。
为此,我使用的是我编写的脚本
<?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
。
当我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
表的原因是什么?
答案 0 :(得分:3)
$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添加到文件的顶部,这将有助于在生产测试期间。
error_reporting(E_ALL);
ini_set('display_errors', 1);
以及or die(mysqli_error($con))
到mysqli_query()
。
使用prepared statements或PDO with prepared statements代替。它们更容易使用,并且使用起来更安全。
答案 1 :(得分:0)
尝试:
INSERT INTO table1 ( column1 )
SELECT col1
FROM table2
这适用于:
Oracle
MS SQL Server
MySQL
Postgres
SQLite v3
TeraData
DB2
SyBase
正如第一次谷歌搜索中看到的那样。
答案 2 :(得分:0)
试试这个 -
$query = 'INSERT INTO outgoing_emails(names, email_address, email_message)
SELECT new_users.names, new_users.email_address, "$new_message"
FROM new_users'
答案 3 :(得分:0)
要将column1从table1复制到column1 table2,代码可以正常工作:
$sql = "INSERT INTO table2 (column1) SELECT column1 FROM table1";
(mysqli_query($conn, $sql)