PHP类私有变量的值被误导
PHP Class private variable misdirected value
首先,我的问题来自于我的php类,该类由AJAX调用访问的php文件调用。
问题是返回值完全错误,并且与sybase_result值不同。那么我错过了什么?
以下是我的程序步骤。
首先我们进行AJAX调用:
$.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_sume.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->getProprioDateInscription()的返回值应该是一个日期。但是,这个函数返回的不是日期,而是另一个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;
}
}
如果我们看一下下面的行:$this->setProprioDateInscription(sybase_result($result,0,"d_date_inscr");
sybase_result返回一个日期(从数据库中看一切正常,值很好)。但是问题出在私有var prop_inscription的Setter和Getter之间。
你能帮我吗?你知道问题出在哪里吗?
非常感谢。
要解决此问题,
只要换一下这条线
// THIS IS PROBLEMATIC
$this->setProprioDateInscription(sybase_result($result, 0, "d_date_inscr"));
至
$this->setProprioDateInscription(utf8_encode(strtr(trim(sybase_result($result, $cpt,"d_date_inscr")),"’","'")));
相关文章:
- 将PHP变量传递给jQuery时遇到问题
- 通过javascript重定向html传递php变量
- 如何在php变量中嵌入JQuery代码
- 在javascript函数中使用php变量
- 将地理编码结果转换为php变量以发布到mysql数据库
- JavaScript,PHP-用JavaScript将多个数据库记录发送到变量或表
- 如何将变量php传递给javascript
- 显示动态变量(php和javascript)的总数
- 传递变量PHP、Javascript location.reload和HTML输入
- 需要将变量 php 的值传递给 javascript,但我不能
- 将变量从 .html 传递到太大而无法容纳在 URL 中的变量.php
- 如何在函数中传递javascript中的变量php
- 在Jquery中插入变量PHP
- 选择正确的变量 php/javascript
- 将HTML存储在变量PHP中,然后回显它
- 将变量PHP Smarty传递给Javascript
- 传递HTML表单post数据到不同的文件/网页javascript变量(php)
- 问题与传递变量(php, sql, jquery拖拽)
- 设置PHP中的javascaript变量(PHP在javascript中)
- 将变量php问题化为代码jquery