从Facileforms中提取数据创建选择列表时出现语法错误


Syntax error when creating a select list by pulling data from Facileforms

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中,他用单引号取代了双引号,所以没有混淆。