Facilieforms使用#_records作为记录id,使用#_subrecords作为提交的数据。所以,我正在学习内在连接。然而,我犯了一个错误。
错误消息是…"分析错误:语法错误,在/home/snbrown/hometest.dedreamhosters.com/components/com_breezingforms/facleforms.process.php(1227):eval()第16行的代码中出现意外的T_CONSTANT_ENCAPSED_STRING"
代码是…
<?php
$user = JFactory::getUser()->get('id');
JFactory::getDBO()->setQuery "SELECT
#_facileforms_records.id,
#_facileforms_subrecords.afname,
#_facileforms_subrecords.alname,
#_facileforms_subrecords.awebsite,
#_facileforms_subrecords.aphone,
#_facileforms_subrecords.aemail,
#_facileforms_subrecords.abrokerage
FROM #_facileforms_records;
INNER JOIN #_facileforms_subrecords;
ON #_facileforms_records.id=#_facileforms_subrecords.record;
WHERE (#_facileforms_subrecords.name = acustomerid AND value = "$userid");
AND (#_facileforms_subrecords.name = "formid AND value = 4)";
?>
当然,作为一个新加入的人,我似乎有点力不从心。如有任何帮助,我们将不胜感激。
您有一些语法错误,在这里很难解释。。
您可以尝试此fixed
代码
<?php
$user = JFactory::getUser()->get('id');
JFactory::getDBO()->setQuery("SELECT
#_facileforms_records.id,
#_facileforms_subrecords.afname,
#_facileforms_subrecords.alname,
#_facileforms_subrecords.awebsite,
#_facileforms_subrecords.aphone,
#_facileforms_subrecords.aemail,
#_facileforms_subrecords.abrokerage
FROM #_facileforms_records;
INNER JOIN #_facileforms_subrecords;
ON #_facileforms_records.id=#_facileforms_subrecords.record;
WHERE (#_facileforms_subrecords.name = acustomerid AND value = '$userid')
AND (#_facileforms_subrecords.name = 'formid' AND value = 4);");
?>
您更正的代码块如下。
JFactory::getDBO()->setQuery("SELECT
#_facileforms_records.id,
#_facileforms_subrecords.afname,
#_facileforms_subrecords.alname,
#_facileforms_subrecords.awebsite,
#_facileforms_subrecords.aphone,
#_facileforms_subrecords.aemail,
#_facileforms_subrecords.abrokerage
FROM #_facileforms_records;
INNER JOIN #_facileforms_subrecords;
ON #_facileforms_records.id=#_facileforms_subrecords.record;
WHERE (#_facileforms_subrecords.name = acustomerid AND value = '"$userid'")
AND (#_facileforms_subrecords.name = '"formid'" AND value = 4);");
好吧,有些人已经发布了固定的代码,但没有人解释问题所在,所以我会的。这里的问题是,您使用双引号将查询字符串括起来,但也试图在查询中使用双引号。如果您有以下字符串
$myString = "this is a string with "quotes" inside of it";
PHP会认为该字符串以with"
结尾,并且quotes
是T_CONSTANT_ENCAPSED_string(使用define函数定义的常量的标识符),因此它将抛出语法错误。
您可以使用多种方法来消除此问题。在@Roopendra答案中,他用'
转义引号,使其成为字符串的一部分,从而产生
在@Shankar Damodaran中,他用单引号取代了双引号,所以没有混淆。