SQLSTATE[42601]: Syntax error: 7 Inner Join error
SQLSTATE[42601]: Syntax error: 7 Inner Join error
我的 SQL/Zend 查询中有一行有问题,但我不明白这一点。
public function getByDemande($idDemande, $typeTiers) {
$select = $this -> newSelect(true);
$select -> from(array('d' => 'Demande'));
$select -> join(array('s' => 'Suivi'), 'd."idDemande" = s."idDemande"');
$select -> join(array('t' => $typeTiers),'d."idContact" = t."idTiers"');
$select -> joinLeft(array('tet' => 'TelephoneTiers'), 't."idTiers" = tet."idTiers"');
$select -> joinLeft(array('mt' => 'MailTiers'), 't."idTiers" = mt."idTiers"');
$select -> join(array('at' => 'AdresseTiers'), 't."idTiers" = at."idTiers"');
$select -> where('d."idDemande" = s."idDemande"', $idDemande);
$select -> where('d.actif is true');
$select -> order('s.dateHeure DESC');
$resultat = $select->__toString();
echo "$resultat\n";
return $this->fetchAll($select);
}
我启动了 SQL/Zend 查询,但这引发了错误 (SQLSTATE[42601]: Syntax error: 7 ERREUR: identifiant délimité de longueur nulle sur ou près de « "" »↵LINE 3: INNER JOIN "" AS "t" ON d."idContact" = t."idTiers")
在另一个文件中,我编码以从此 SQL 查询中恢复数据。
$data = $this->_getPostData();
$idDemande = $data['idDemande'];
$idTypeTiers = $data['idTypeTiers'];
$typeTiers = null;
$gtwDemande = new LogisCom_Model_Gateway_Demande();
$resultatDemande = $gtwDemande->getByDemande($idDemande, $typeTiers);
$resultatDemande = $resultatDemande->toArray();
switch ($idTypeTiers) {
case TypeTiers::BENEFICIAIRE :
$typeTiers = "Beneficiaire";
break;
case TypeTiers::SALARIE :
$typeTiers = "Salarie";
break;
case TypeTiers::PROSPECT :
$typeTiers = "Prospect";
break;
case TypeTiers::CANDIDAT :
$typeTiers = "Candidat";
break;
case TypeTiers::ENTOURAGE :
$typeTiers = "Entourage";
break;
case TypeTiers::FINANCEUR :
$typeTiers = "Financeur";
break;
case TypeTiers::AUTRE :
$typeTiers = "StructureExterne";
break;
}
感谢您的帮助。
似乎变量 $typeTiers
未定义或为空字符串。请尝试在方法的开头放置一个 var_dump($typeTiers)
以查看相关变量包含的内容。如果它是空的,请不要通过事先检查来使用空字符串调用您的方法。
在您的 switch/case
中,您没有 default
后备。因此,您的 $idTypeTiers
的值可能不在您的 case
中,并且 $typeTiers
一直为空。但是您对 getByDemande
的调用甚至在此切换之前就已完成,因此即使使用后备变量,您的变量也始终为 null。
附录:
您可能需要将错误消息翻译成英文,因为不是每个人都说法语(这也适用于其他语言)。这样,人们将更容易理解您的错误消息,而无需使用翻译等。
我的 SQL/Zend 查询中有一行有问题,但我不明白这一点。
public function getByDemande($idDemande, $typeTiers) {
$select = $this -> newSelect(true);
$select -> from(array('d' => 'Demande'));
$select -> join(array('s' => 'Suivi'), 'd."idDemande" = s."idDemande"');
$select -> join(array('t' => $typeTiers),'d."idContact" = t."idTiers"');
$select -> joinLeft(array('tet' => 'TelephoneTiers'), 't."idTiers" = tet."idTiers"');
$select -> joinLeft(array('mt' => 'MailTiers'), 't."idTiers" = mt."idTiers"');
$select -> join(array('at' => 'AdresseTiers'), 't."idTiers" = at."idTiers"');
$select -> where('d."idDemande" = s."idDemande"', $idDemande);
$select -> where('d.actif is true');
$select -> order('s.dateHeure DESC');
$resultat = $select->__toString();
echo "$resultat\n";
return $this->fetchAll($select);
}
我启动了 SQL/Zend 查询,但这引发了错误 (SQLSTATE[42601]: Syntax error: 7 ERREUR: identifiant délimité de longueur nulle sur ou près de « "" »↵LINE 3: INNER JOIN "" AS "t" ON d."idContact" = t."idTiers")
在另一个文件中,我编码以从此 SQL 查询中恢复数据。
$data = $this->_getPostData();
$idDemande = $data['idDemande'];
$idTypeTiers = $data['idTypeTiers'];
$typeTiers = null;
$gtwDemande = new LogisCom_Model_Gateway_Demande();
$resultatDemande = $gtwDemande->getByDemande($idDemande, $typeTiers);
$resultatDemande = $resultatDemande->toArray();
switch ($idTypeTiers) {
case TypeTiers::BENEFICIAIRE :
$typeTiers = "Beneficiaire";
break;
case TypeTiers::SALARIE :
$typeTiers = "Salarie";
break;
case TypeTiers::PROSPECT :
$typeTiers = "Prospect";
break;
case TypeTiers::CANDIDAT :
$typeTiers = "Candidat";
break;
case TypeTiers::ENTOURAGE :
$typeTiers = "Entourage";
break;
case TypeTiers::FINANCEUR :
$typeTiers = "Financeur";
break;
case TypeTiers::AUTRE :
$typeTiers = "StructureExterne";
break;
}
感谢您的帮助。
似乎变量 $typeTiers
未定义或为空字符串。请尝试在方法的开头放置一个 var_dump($typeTiers)
以查看相关变量包含的内容。如果它是空的,请不要通过事先检查来使用空字符串调用您的方法。
在您的 switch/case
中,您没有 default
后备。因此,您的 $idTypeTiers
的值可能不在您的 case
中,并且 $typeTiers
一直为空。但是您对 getByDemande
的调用甚至在此切换之前就已完成,因此即使使用后备变量,您的变量也始终为 null。
附录:
您可能需要将错误消息翻译成英文,因为不是每个人都说法语(这也适用于其他语言)。这样,人们将更容易理解您的错误消息,而无需使用翻译等。