使用php-mysqli将数据从一个表复制到另一个表失败


Copying data from one table to another using php mysqli fails

我正在为一个网站制作联系表格,我不想立即回复,所以我将客户的电子邮件地址存储在一个表中,我可以选择何时回复电子邮件以及回复谁。

为了做到这一点,我使用了这个脚本,我已经写了

<?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)