Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 致命错误:在通过wordpress插入数据时,对null上的成员函数prepare()调用_Php_Wordpress_Forms_Pdo_Insert - Fatal编程技术网

Php 致命错误:在通过wordpress插入数据时,对null上的成员函数prepare()调用

Php 致命错误:在通过wordpress插入数据时,对null上的成员函数prepare()调用,php,wordpress,forms,pdo,insert,Php,Wordpress,Forms,Pdo,Insert,我被困在这里:致命错误:在C:\wamp64\www\covid19 rdc\wp content\plugins\cov19 drc form\inclus\cdf-functions.php的第431行调用null上的成员函数prepare() 我正在构建一个包含注册表单的wordpress插件。但是试图通过我的插件插入数据,我收到了这个消息。我在网上读过类似的文章,但没有一篇与我的情况相近。Im到nez到php,所以请帮助 这是我的联系: require_once plugin_dir_p

我被困在这里:致命错误:在C:\wamp64\www\covid19 rdc\wp content\plugins\cov19 drc form\inclus\cdf-functions.php的第431行调用null上的成员函数prepare()

我正在构建一个包含注册表单的wordpress插件。但是试图通过我的插件插入数据,我收到了这个消息。我在网上读过类似的文章,但没有一篇与我的情况相近。Im到nez到php,所以请帮助

这是我的联系:

require_once plugin_dir_path(__FILE__) . 'cnx_bdd.php';
其余代码如下所示:

//Connexion to the db in the connexion file

$host = "localhost";
$db   = "covid19rdc_db";
$user = "root";
$pass = "";
$charset = "utf8mb4";


try 
{
    $pdo = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass);
} 

catch (\PDOException $e) 
{
     throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
//这是保存数据的功能

function save_data()
{
    if ( isset($_POST['btnEnregistrer'] ) ) 
    {




        // sanitize entries

        global $nomPat, $postnomPat, $prenomPat, $datenaisPat, $sexePat, $etatcivil, $nationalite_ID, $telPat, $emailPat, $domicilePat, $commune_ID, $ville, $paysvisites, $date_entree, $point_entree, $contactUrgence, $emailUrgence, $telUrgence, $catdeclarant, $fonction_agent, $commentaires;         



            $nomPat         =   sanitize_text_field( $_POST['nomPat'] );
            $postnomPat     =   sanitize_text_field( $_POST['postnomPat'] );
            $prenomPat      =   sanitize_text_field( $_POST['prenomPat'] ); 
            $datenaisPat    =   $_POST['datenaisPat'];
            $sexePat        =   $_POST['sexePat'];
            $etatcivil      =   $_POST['etatcivil'];
            $nationalite_ID =   $_POST['nationalite_ID'];
            $telPat         =   sanitize_text_field( $_POST['telPat'] );                
            $emailPat       =   sanitize_email( $_POST['emailPat'] ); 
            $domicilePat    =   sanitize_text_field( $_POST['domicilePat'] );
            $commune_ID     =   $_POST['commune_ID'];
            $ville          =   sanitize_text_field( $_POST['ville'] );
            $paysvisites    =   sanitize_text_field( $_POST['paysvisites'] );
            $date_entree        =   $_POST['date_entree'];
            $point_entree   =   sanitize_text_field( $_POST['point_entree'] );
            $contactUrgence =   sanitize_text_field( $_POST['contactUrgence'] );                
            $emailUrgence   =   sanitize_email( $_POST['emailUrgence'] );
            $telUrgence     =   sanitize_text_field( $_POST['telUrgence'] );
            $catdeclarant   =   $_POST['catdeclarant'];
            $fonction_agent     =   sanitize_text_field( $_POST['fonction_agent'] );
            $commentaires   =   sanitize_text_field( $_POST['commentaires'] );



            $nomPat         =   $_POST['nomPat'] ;
            $postnomPat     =   $_POST['postnomPat'] ;
            $prenomPat      =   $_POST['prenomPat'] ; 
            $datenaisPat    =   $_POST['datenaisPat'];
            $sexePat        =   $_POST['sexePat'];
            $etatcivil      =   $_POST['etatcivil'];
            $nationalite_ID =   $_POST['nationalite_ID'];
            $telPat         =   $_POST['telPat'] ;              
            $emailPat       =   $_POST['emailPat'] ; 
            $domicilePat    =   $_POST['domicilePat'] ;
            $commune_ID     =   $_POST['commune_ID'];
            $ville          =   $_POST['ville'] ;
            $paysvisites    =   $_POST['paysvisites'] ;
            $date_entree    =   $_POST['date_entree'];
            $point_entree   =   $_POST['point_entree'] ;
            $contactUrgence =   $_POST['contactUrgence'] ;              
            $emailUrgence   =   $_POST['emailUrgence'] ;
            $telUrgence     =   $_POST['telUrgence'] ;
            $catdeclarant   =   $_POST['catdeclarant'];
            $fonction_agent     =   $_POST['fonction_agent'] ;
            $commentaires   =   $_POST['commentaires'] ;





        // insert data




        $sql = "INSERT INTO cov_patient(NomPatient, PostnomPatient, PrenomPatient, DateNaisPatient, SexePatient, EtatCivil, Nationalite_ID, TelPatient, EmailPatient, DomicilePatient, Commune_ID, Ville, PaysVisites, DateEntree, PointEntree, ContactUrgence, EmailUrgence, TelUrgence, CatDeclarant, FonctionAgent) VALUES (:nomPat, :postnomPat, :prenomPat, :datenaisPat, :sexePat, :etatcivil, :nationalite_ID, :telPat, :emailPat, :domicilePat, :commune_ID, :ville, :paysvisites, :date_entree, :point_entree, :contactUrgence, :emailUrgence, :telUrgence, :catdeclarant, :fonction_agent, :commentaires)";

        $req = $pdo->prepare($sql);

        $req-> execute(array(
                        ":nomPat"           => $nomPat, 
                        ":postnomPat"       => $postnomPat, 
                        ":prenomPat"        => $prenomPat,
                        ":datenaisPat"      => $datenaisPat, 
                        ":sexePat"          => $sexePat , 
                        ":etatcivil"        => $etatcivil , 
                        ":nationalite_ID"   => $nationalite_ID , 
                        ":telPat"           => $telPat , 
                        ":emailPat"         => $emailPat , 
                        ":domicilePat"      => $domicilePat , 
                        ":commune_ID"       => $commune_ID , 
                        ":ville"            => $ville ,
                        ":paysvisites"      => $paysvisites ,
                        ":date_entree"      => $date_entree ,
                        ":point_entree"     => $point_entree ,
                        ":contactUrgence"   => $contactUrgence ,
                        ":emailUrgence"     => $emailUrgence ,
                        ":telUrgence"       => $telUrgence ,
                        ":catdeclarant"     => $catdeclarant ,
                        ":fonction_agent"   => $fonction_agent ,
                        ":commentaires"     => $commentaires

                    )
                );

        echo 'Success.';   

    }



    else
    {
        //call the form creation function

        mon_formulaire_covid19(
            $nomPat, 
            $postnomPat, 
            $prenomPat, 
            $datenaisPat, 
            $sexePat, 
            $etatcivil, 
            $nationalite_ID, 
            $telPat, 
            $emailPat, 
            $domicilePat, 
            $commune_ID, 
            $ville,
            $paysvisites,
            $date_entree,
            $point_entree,
            $contactUrgence,
            $emailUrgence,
            $telUrgence,
            $catdeclarant,
            $fonction_agent,
            $commentaires
        );
    }

}

$pdo变量有问题

您需要做的是将$pdo传递给函数

假设您的所有代码都位于cnx_bdd.php中,
save_data()
函数将需要一个参数,如
save_data($pdo){…}

现在,当调用save_data函数时,您可以将连接句柄($pdo)传递给它,一切都将正常工作


希望这有帮助。

当您声明$pdo时,它在全局范围内

try 
{
  $pdo = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass);
} 

catch (\PDOException $e) 
{
  throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
但在这个函数中,您没有对$pdo对象的引用

function save_data()
{
...........
$req = $pdo->prepare($sql);
您可以在
save_data()
函数中声明您的
$pdo
连接,也可以在
save_data()函数中使用
global$pdo

解决方案1:

function save_data()
{
...........
//Connexion to the db in the connexion file

$host = "localhost";
$db   = "covid19rdc_db";
$user = "root";
$pass = "";
$charset = "utf8mb4";

try 
{
   $pdo = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass);
} 

catch (\PDOException $e) 
{
   throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

$req = $pdo->prepare($sql);
解决方案2:

function save_data()
{
...........
global $pdo; //access $pdo db connection object
$req = $pdo->prepare($sql);