簡體   English   中英

如何使用php將多行數據插入Mysql DB

[英]How to insert multiple rows of data into Mysql DB with php

我有以下代碼:

    <?php
session_start();
$page_name = 'Send Emails';
    require_once('header.php');
    if(!empty($_POST['send'])){
        $id_mail= "";
        foreach ($_POST['selected'] as $key => $value) {
            echo "$key - $value <br>";
            $id_mail .= "$value, ";
            }
            $id_mail= substr($id_mail, 0, -2);
        }
    if(!empty($_POST['Send2'])){
            $mail= mysqli_query($conn, "SELECT mail FROM students WHERE student_id IN($_POST[id_mail])");
            echo "SELECT mail FROM students WHERE student_id IN($_POST[id_mail]) ";
            while ($row_mail = mysqli_fetch_assoc($mail)) {
                echo "$row_mail[mail] ";
            $to = $row_mail['mail'];
            $subject = $_POST['head'];
            $message = $_POST['body'];
            $headers = 'From: code-week@example.com' . "\r\n" .
            'Please do not reply to this message' . "\r\n" .
            'X-Mailer: PHP/' . phpversion();
            mail($to, $subject, $message, $headers);
            }

        }
?>
<form name='mail2' method='post' action='send_email.php'><br/>
<input type="hidden" name="id_mail" value="<?php echo $id_mail; ?>">
    <br/>

<input type='text' name='head' placeholder='header'>
<br/>
<br/>

<textarea name='body' rows="4" cols="50" placeholder='body'></textarea><br/>
<br/>
<input class='btn btn-danger'type='submit' name="Send2" value='Send'>
</form>

目的是從學生表中讀取選定行的ID,進行打印,以便我可以從上一頁中看到它的正確選擇,然后基於它,向所有具有選定ID的人發送電子郵件。 我的問題是,我如何才能將發送的電子郵件(只是主題和消息部分)與所選的學生ID一起寫入新的Mysql DB表中? 每次我嘗試使用普通的INSERT查詢執行此操作時,都會說所選的ID無效,假定它為0,然后寫出主題和消息,並在ID列中輸入假定值-0。選擇2或3個人(2-3個ID),它會寫第一個,然后出現錯誤。 如果第一個字段已滿(ID為0),它將輸出錯誤,並且不寫入任何內容。
最終結果應該是一個包含3列的表格-學生ID,電子郵件主題和電子郵件。 目的是通知選定的學生,然后將消息寫在表中,這樣我就可以看到已通知女巫學生。

首先,最好不要在查詢中使用未轉義的POST數據,因為它可能導致sql注入

至於“插入”部分-如果您具有所有必要的字段,主鍵和默認值,則只需使用INSERT語句即可保存數據

1)。 is_notified一列,並將其值初始設置為零。

2)。 將電子郵件發送給學生后,立即將is_notified列更新為1。

如果要使用PDO進行多次更新,可以使用以下方法:-

<?php
try
{
    $s = $conn->prepare("your SQL");
}
catch(PDOException $e)
{
    echo $e->getMessage();
}

foreach(loop through the ids here)
{
    $s->bindParam(':paramname', $paramvalue);
    $s->execute();
}
?>
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

這對我有用:

if(!empty($_POST['Send2'])){ 
14             $mail= mysqli_query($conn, "SELECT student_id, mail FROM students WHERE student_id IN($_POST[id_mail])"); 
15             echo "SELECT student_id, mail FROM students WHERE student_id IN($_POST[id_mail]) "; 
16             while ($row_mail = mysqli_fetch_assoc($mail)) { 
17                 echo "$row_mail[mail] "; 
18             $to = $row_mail['mail']; 
19             $subject = $_POST['head']; 
20             $message = $_POST['body']; 
21             $headers = 'From: code-week@example.com' . "\r\n" . 
22             'Please do not reply to this message' . "\r\n" . 
23             'X-Mailer: PHP/' . phpversion(); 
24             mail($to, $subject, $message, $headers); 
25             $sent_mails= mysqli_query($conn, "INSERT INTO sent_mails (id_st, mail_head, content) VALUES ('$_POST[id_mail]', '$subject', '$message') "); 
26             if (mysqli_query($conn, $sent_mails)){ 
27              echo "Success"; 
28             } else { 
29              echo "Error ". $sent_mails . "<br/>" . mysqli_error($conn); 
30             } 
31             } 
32         } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM