Php 我试图使用PDO将数据插入数据库,但每当我尝试查询失败时,我就会学习PDO

Php 我试图使用PDO将数据插入数据库,但每当我尝试查询失败时,我就会学习PDO,php,pdo,Php,Pdo,每当我尝试使用下面的php脚本插入时,就会收到一条错误消息:SQLSTATE[42000]:语法错误或访问冲突:1065查询为空,foreach循环用于处理多个select值 组名 注册号 组长姓名 组长联系人 团体活动 选择活动 组类别 选择类别 男人 女人 青年 二者都 男子人数 妇女人数 全部的 从我所看到的情况来看,你根本不必担心 <?php require_once("functions/function.php"); require_once("db_c

每当我尝试使用下面的php脚本插入时,就会收到一条错误消息:SQLSTATE[42000]:语法错误或访问冲突:1065查询为空,foreach循环用于处理多个select值

组名 注册号 组长姓名 组长联系人 团体活动 选择活动 组类别 选择类别 男人 女人 青年 二者都 男子人数 妇女人数 全部的
从我所看到的情况来看,你根本不必担心

<?php
     require_once("functions/function.php"); 
     require_once("db_connection.php");
     require_once("database.php");
     if(isset($_POST['group_name'])){

         try{
             $sql = "INSERT INTO group_details 
                                (group_reg_no, group_name, leader_name, 
                                 leader_contact, region, district, division, 
                                 ward, village, activity, 
                                 category, men, women, 
                                 total, registred_date) 
                        VALUES (:group_reg_no, :group_name, :leader_name, 
                                :leader_contact, :region, :district,
                                :division, :ward, :village, :activity,
                                :category, :men, :women, 
                                :total, now())";

            $statement = $db->prepare($sql);

            $params = array(':group_reg_no' => $_POST['group_reg_no'], 
                            ':group_name' => $_POST['group_name'], 
                            ':leader_name' => $_POST['leader_name'],
                            ':leader_contact' => $_POST['leader_contact'], 
                            ':region' => $_POST['region'], 
                            ':district' => $_POST['district'], 
                            ':division' => $_POST['division'], 
                            ':ward' => $_POST['ward'], 
                            ':village' => $_POST['village'], 
                            ':activity' => $activity, 
                            ':category' => $_POST['category'], 
                            ':men' => $_POST['men'], 
                            ':women' => $_POST['women'], 
                            ':total' => $_POST['total'])

            foreach ( $_POST['activity'] as $activity ) {
                $params[':activity'] = $activity;

                $statement->execute();                
            } // endforeach
            $result = "<p style='padding: 20px; color: green;'> Registration Successful</p>";
        }
        catch (PDOException $ex){
            $result = "<p style='padding: 20px; color: red;'> An error occurred: ".$ex->getMessage()."</p>";
        }
     }
?>
当然,如果您想删除一些不必要的代码,可以删除一些代码并将$\u POST值直接放入$params数组中


您可能还希望在执行插入之前确保所有这些$\u POST值都已设置,或者至少使用默认值初始化每个标量变量。只是为了完全安全。

从我所看到的情况来看,你根本不需要去开会

<?php
     require_once("functions/function.php"); 
     require_once("db_connection.php");
     require_once("database.php");
     if(isset($_POST['group_name'])){

         try{
             $sql = "INSERT INTO group_details 
                                (group_reg_no, group_name, leader_name, 
                                 leader_contact, region, district, division, 
                                 ward, village, activity, 
                                 category, men, women, 
                                 total, registred_date) 
                        VALUES (:group_reg_no, :group_name, :leader_name, 
                                :leader_contact, :region, :district,
                                :division, :ward, :village, :activity,
                                :category, :men, :women, 
                                :total, now())";

            $statement = $db->prepare($sql);

            $params = array(':group_reg_no' => $_POST['group_reg_no'], 
                            ':group_name' => $_POST['group_name'], 
                            ':leader_name' => $_POST['leader_name'],
                            ':leader_contact' => $_POST['leader_contact'], 
                            ':region' => $_POST['region'], 
                            ':district' => $_POST['district'], 
                            ':division' => $_POST['division'], 
                            ':ward' => $_POST['ward'], 
                            ':village' => $_POST['village'], 
                            ':activity' => $activity, 
                            ':category' => $_POST['category'], 
                            ':men' => $_POST['men'], 
                            ':women' => $_POST['women'], 
                            ':total' => $_POST['total'])

            foreach ( $_POST['activity'] as $activity ) {
                $params[':activity'] = $activity;

                $statement->execute();                
            } // endforeach
            $result = "<p style='padding: 20px; color: green;'> Registration Successful</p>";
        }
        catch (PDOException $ex){
            $result = "<p style='padding: 20px; color: red;'> An error occurred: ".$ex->getMessage()."</p>";
        }
     }
?>
当然,如果您想删除一些不必要的代码,可以删除一些代码并将$\u POST值直接放入$params数组中


您可能还希望在执行插入之前确保所有这些$\u POST值都已设置,或者至少使用默认值初始化每个标量变量。只是为了完全安全。

下面是我对课程的评论,这是我的简单答案:

在表单所在的页面上添加以下内容:

<?php
require_once("functions/function.php");
require_once("db_connection.php");
require_once("database.php");
require_once('class.handleit.php');

$handle = new HandleIt();

if (isset($_POST['group_name']))
{
    $handle->handleIt($_POST['group_name'], $_POST['group_reg_no'], $_POST['leader_name'], $_POST['leader_contact'], $_POST['region'], $_POST['district'], $_POST['division'],
                     $_POST['ward'], $_POST['village'], $_POST['activity'], $_POST['category'], $_POST['men'], $_POST['women'], $_POST['total']);
}
?>
您将看到有两个类。。Insert和fetch Insert解释了它的本身,fetch是这样的,您可以在所需的页面上运行foreach

以下是foreach示例:

<?php

$getForeach = $handle->fetchIt();

foreach ($getForeach as $row)
{
    echo "<div>$row->group_name</div>";
    /* and so on.. you get the idea.. */
}

?>

请记住,foreach需要进入需要您的类和类名的页面。

因此,下面是我对类的评论,这是我的简化答案:

在表单所在的页面上添加以下内容:

<?php
require_once("functions/function.php");
require_once("db_connection.php");
require_once("database.php");
require_once('class.handleit.php');

$handle = new HandleIt();

if (isset($_POST['group_name']))
{
    $handle->handleIt($_POST['group_name'], $_POST['group_reg_no'], $_POST['leader_name'], $_POST['leader_contact'], $_POST['region'], $_POST['district'], $_POST['division'],
                     $_POST['ward'], $_POST['village'], $_POST['activity'], $_POST['category'], $_POST['men'], $_POST['women'], $_POST['total']);
}
?>
您将看到有两个类。。Insert和fetch Insert解释了它的本身,fetch是这样的,您可以在所需的页面上运行foreach

以下是foreach示例:

<?php

$getForeach = $handle->fetchIt();

foreach ($getForeach as $row)
{
    echo "<div>$row->group_name</div>";
    /* and so on.. you get the idea.. */
}

?>

请记住,foreach需要进入需要您的类和类名的页面。

您可以将foreach$\u POST作为$key=>$val{$\u POST[$key]=strval$val;}在分配变量并查看是否有任何问题得到解决之前,我已经尝试了您的建议,但仍然存在相同的错误您确实需要学习如何使用类可以将每个$\u POST作为$key=>$val{$\u POST[$key]=strval$val;}在您分配变量并查看是否有问题得到解决之前?我尝试了您的建议,但仍然存在相同的错误。您确实需要了解如何使用classesif i remove foreach loop如果用户选择多个活动,我如何处理多个select value?您在原始代码中并没有这样做。因此,您最好向我们展示正在处理的表单,以便我可以更仔细地查看可能会进入此脚本的输入您的foreach只是在执行$sqlInsert=。。。。代码行多次,不运行多次插入OK我将学习如何使用类,但为什么建议使用类@Option@punji我将忽略这一评论,如果我删除foreach循环,那么在用户选择多个活动的情况下,我如何处理多个select值呢?您在原始代码中实际上并没有这样做。因此,您最好向我们展示正在处理的表单,以便我可以更仔细地查看可能会进入此脚本的输入您的foreach只是在执行$sqlInsert=。。。。代码行多次,不运行多次插入OK我将学习如何使用类,但为什么建议使用类@Option@punji我将忽略这一评论,它毫无帮助