PHP类私有变量的错误定向值
首先,我的问题来自一个php文件调用的php类,该文件通过AJAX调用进行访问 问题是返回值完全错误,并且与sybase_结果值不同。那么我错过了什么 以下是我的程序步骤 首先,我们进行AJAX调用:PHP类私有变量的错误定向值,php,javascript,jquery,class,private-methods,Php,Javascript,Jquery,Class,Private Methods,首先,我的问题来自一个php文件调用的php类,该文件通过AJAX调用进行访问 问题是返回值完全错误,并且与sybase_结果值不同。那么我错过了什么 以下是我的程序步骤 首先,我们进行AJAX调用: $.ajax( { type: "POST", url: "ajax/load_fiche_resume.php", timeout:5000, dataType: 'json', data: ({matricule:matricule, id_mun:id
$.ajax(
{
type: "POST",
url: "ajax/load_fiche_resume.php",
timeout:5000,
dataType: 'json',
data: ({matricule:matricule, id_mun:id_mun}),
beforeSend: function()
{
// Handle the beforeSend event
$('#loading-bar').show("slow");
},
complete: function()
{
// Handle the complete event
$('#loading-bar').hide("slow");
},
success: function(data)
{
console.dir(data);
$('#tab-role').html(formatData(data));
},
error: function ()
{
alert("Oops! Une erreur c'est produite.\nVeuiller rafraichir la page. \nSi cela se reproduit, veuiller contacter le propriétaire du site.");
}
});
然后,我们进入php文件load_fiche_resume.php
include('../class/class_role.php');
$oRole = new Role("42025", "2036-94-5034");
$ar_step2 = array(
array("Propriétaire(s)"),
array("Nom(s) : ", $oRole->getProprioNoms() ),
array("Adresse postale : ", $oRole->getProprioAdresse() ),
array("Condition particulière d'inscription : ", $oRole->getProprioCondition() ),
array("Date d'inscription au rôle : ", $oRole->getProprioDateInscription() )
);
如果我们仔细看上面的代码,函数$oRole->getProprioDateDirthing()的返回值应该是一个日期。但是这个函数不是日期,而是从另一个get函数返回一个字符串(即:它将显示$oRole->getProprioNoms的值),这是完全错误的
如果我们进入$oRole类,我们有:
class Role
{
private $prop_inscription;
public function getInfoProprio()
{
$qry = "SELECT
p.nom_form AS nom_form,
p.t_typos AS t_typos,
substr(p.d_date_inscr,1,10) AS d_date_inscr,
pga.adr_form AS adr_form,
p.id_adr AS id_adr,
p.id AS id
FROM
ev_dossiers d,
ro_b75 p,
pg_adresses pga
WHERE
d.id_dossiers = ".$this->getIdDossier()." AND
d.typ_donnees = 11 AND
d.id_donnees = p.id AND
p.id_adr = pga.id_adr order by p.id, p.id_adr, p.ordre;";
$this->prop_qry = $qry;
$result = sybase_query($qry, $this->getLinkDB());
$nbr = sybase_num_rows($result);
$typos = sybase_result($result, 0, "t_typos");
if($nbr>0)
{
for($cpt=0; $cpt<$nbr; $cpt++)
{
if($cpt===0)
{
$this->setProprioNoms(utf8_encode(strtr(trim(sybase_result($result, $cpt, "nom_form")),"’","'")));
$this->setProprioAdresse(utf8_encode(strtr(trim(sybase_result($result, $cpt, "adr_form")),"’","'")));
$this->setProprioCondition($this->getConditionInscription(sybase_result($result, $cpt, "t_typos")));
// THIS IS PROBLEMATIC
$this->setProprioDateInscription(sybase_result($result, 0, "d_date_inscr"));
}
else
{
$this->setProprioNoms(", ".utf8_encode(strtr(trim(sybase_result($result, $cpt, "nom_form")),"’","'")));
}
}
}
}
...
public function getProprioDateInscription()
{
return $this->prop_inscription;
}
private function setProprioDateInscription($date)
{
$this->prop_inscription = $date;
}
}
类角色
{
私人$prop_铭文;
公共函数getInfoProprio()
{
$qry=“选择
p、 名称形式作为名称形式,
p、 t_错别字作为t_错别字,
子项(p.d_日期检查,1,10)作为d_日期检查,
pga.adr表格作为adr表格,
p、 id_adr作为id_adr,
p、 身份证
从…起
ev_档案d,
ro_b75 p,
pg_地址为pga
哪里
d、 id_档案=“.this->getIdDossier()”和
d、 典型值=11和
d、 id_donnees=p.id和
p、 id_adr=p.id的pga.id_adr订单,p.id_adr,p.ordre;“;
$this->prop_qry=$qry;
$result=sybase_查询($qry,$this->getLinkDB());
$nbr=sybase\u num\u行($result);
$typos=sybase_result($result,0,“t_typos”);
如果($nbr>0)
{
对于($cpt=0;$cptsetproprionms)(utf8_编码(strtr(trim(sybase_结果($result,$cpt,“nom_form”)),“,”,“”));
$this->setpropioadresse(utf8_编码(strtr(trim(sybase_结果($result,$cpt,“adr_形式”),“,”,“”));
$this->setProprioCondition($this->getconditionedition(sybase_result($result,$cpt,“t_typos”));
//这是有问题的
$this->setProprioDate铭文(sybase_result($result,0,“d_date_inscr”);
}
其他的
{
$this->setProprioNoms(“,”.utf8_encode(strtr(trim(sybase_result($result,$cpt,“nom_form”),“,”));
}
}
}
}
...
公共函数getProprioDateIngration()
{
返回$this->prop_铭文;
}
私有函数setProprioDate铭文($date)
{
$this->prop_铭文=$date;
}
}
如果我们看一下这一行:$this->setProprioDate铭文(sybase_result($result,0,“d_date_inscr”)
sybase_结果返回一个日期(从数据库中一切正常,值良好)。但问题在于私有var prop_铭文的Setter和Getter之间
你能帮我吗?你知道问题出在哪里吗
非常感谢。要解决此问题
只要换这条线就行了
// THIS IS PROBLEMATIC
$this->setProprioDateInscription(sybase_result($result, 0, "d_date_inscr"));
到
您好,首先,我认为您应该获得$this->setProprioDateIngrating(sybase_result($result,$cpt,“d_date_inscr”);而不是$this->setProprioDateIngrating(sybase_result($result,0,“d_date_inscr”));您希望从该sql查询中获得多少行?在else中,您将覆盖Procronoms。这意味着如果您从sql查询中获得两行,您将从第一行设置日期,然后在下一个循环中,您将覆盖专有名称。一个建议是,以json格式返回数据。您可以将php数组转换为json格式,如s:echo json_encode($ar_step2);感谢您的回复。对于您的第一条评论,我们只需要返回的第一行。
$this->setProprioDateInscription(utf8_encode(strtr(trim(sybase_result($result, $cpt,"d_date_inscr")),"’","'")));