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