使用表单和PDO插入多行 [英] Insert multiple rows using form and PDO

查看:70
本文介绍了使用表单和PDO插入多行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,我被困在PHP代码中,使用表格和PDO插入多行 在我的代码下面,请帮助我修复它 我将不胜感激所有评论和建议的解决方案 并原谅我的错误,因为我是新用户i

Hello guys i am stuck in PHP code to Insert multiple rows using form and PDO Below my code please help me to fix it I'll appreciate all comments and suggested solutions and forgive my mistakes because I am new i PHP

HTML代码

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Firstname: <input type="text" name="firstname[]"><br>
Lastname: <input type="text" name="lastname[]"><br>
Email: <input type="text" name="email[]"><br>
<hr>
Firstname: <input type="text" name="firstname[]"><br>
Lastname: <input type="text" name="lastname[]"><br>
Email: <input type="text" name="email[]"><br>
<input type="submit" name="submit" value="Submit">
</form>

PHP代码

<?php
$servername = "";
$username = "";
$password = "";
$dbname = "";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $firstname = input_checker($_POST["firstname"]);
        $lastname = input_checker($_POST["lastname"]);
        $email = input_checker($_POST["email"]);   

        foreach ($row as $rows) {
            // prepare sql and bind parameters
            $stmt = $conn->prepare("INSERT INTO memo (firstname, lastname, email) 
            VALUES (:firstname, :lastname, :email)");
            $stmt->bindParam(':firstname', $rows);
            $stmt->bindParam(':lastname', $rows);
            $stmt->bindParam(':email', $rows);
            $stmt->execute();

            echo "New records created successfully";
        }
    }
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;

function input_checker($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
?>

推荐答案

请缩进,很难阅读.

它不起作用. 不要进行查询.与$ rows数组中包含元素的次数一样,您向一个查询发送的错误数据的次数将达到

It can't work. DONT FOREACH THE QUERY. You'll send one query with bad datas as many times as you have elements in $rows array

您在这里所做的事情没有发送任何信息,因为$ rows不存在.

What you're doing here is sending nothing cause $rows don't exist.

所以这是步骤. 做

$rows = array($firstname, $lastname, $email);
$stmt = $conn->prepare("INSERT INTO memo(ID, firstname, lastname, email) 
VALUES (NULL, :firstname, :lastname, :email)");
foreach($rows as $key => $value){
         $stmt->bindParam($key, $value);
}
$stmt -> execute();

或者您可以尝试通过以下方式构建查询: DB_connect:

OR you can try building the query this way : DB_connect :

<?php
    $db_username = "root";
    $db_password = "";
    $db_host = "localhost";
    $db_name = "veterinaires";
    /* PDO EN FR OU EN ARABE C ISSI */
    $db_options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");

        try {
            $db = new PDO("mysql:host={$db_host};dbname={$db_name};charset=utf8", $db_username, $db_password, $db_options);
        } catch(PDOException $ex) {
            die("Failed to connect to the database: " . $ex->getMessage());
        }

    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
?>

查询:

        $query = "INSERT INTO patients
                    (ID,
                    pet_name,
                    breed,
                    colour,
                    sex,
                    date_of_birth,
                    microchip_tatoo,
                    comment,
                    owner_ID)
                VALUES
                    (NULL,
                    :pet_name,
                    :breed,
                    :colour,
                    :sex,
                    :date_of_birth,
                    :microchip_tatoo,
                    :comment,
                    :owner_ID)";
        $query_params = array(':pet_name' => $pet_name,
                              ':breed' => $breed,
                             ':colour' => $colour,
                             ':sex' => $sex,
                             ':date_of_birth' => $date_of_birth,
                             ':microchip_tatoo' => $microchip_tatoo,
                             ':comment' => $comment,
                             ':owner_ID' => $_SESSION['ID']);
        try {
            $stmt = $db->prepare($query);
            $result = $stmt->execute($query_params);
            $check = true;
        }catch(PDOException $ex){
            $check = false;
            die("Failed to run query: " . $ex->getMessage());
        }
?>

这篇关于使用表单和PDO插入多行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆