Php 写入Joomla数据库

Php 写入Joomla数据库,php,mysql,joomla,Php,Mysql,Joomla,我是一个前端开发人员,所以我的PHP有点缺乏,我被卡住了。 我正在尝试将表单中的一些数据写入Joomla数据库。 这只是一个电子邮件地址,并不复杂。我在数据库中创建了一个表单和一个表来保存电子邮件地址。然而,我无法让它写入数据库,我不确定我遗漏了什么。 我不确定我的代码中需要包含哪些类。我包括了joomla/factory,所以我没有得到一个错误,告诉我JFactory不是一个对象,但我不知道是否需要包括任何其他内容 以下是我的PHP代码: $emailAdd = $_POST['email']

我是一个前端开发人员,所以我的PHP有点缺乏,我被卡住了。 我正在尝试将表单中的一些数据写入Joomla数据库。 这只是一个电子邮件地址,并不复杂。我在数据库中创建了一个表单和一个表来保存电子邮件地址。然而,我无法让它写入数据库,我不确定我遗漏了什么。 我不确定我的代码中需要包含哪些类。我包括了joomla/factory,所以我没有得到一个错误,告诉我JFactory不是一个对象,但我不知道是否需要包括任何其他内容

以下是我的PHP代码:

$emailAdd = $_POST['email'];

require_once ('../../libraries/joomla/factory.php');

$db =& JFactory::getDBO();
$query = "INSERT INTO '#__pdfemails' ('emailaddress')
    VALUES ('thevalue')";
$db->setQuery($query);
$db->query();
我没有收到任何类型的错误,但它没有写入数据库


有人能帮忙吗?

这里有一个简单的答案-

有2页的表单生成器。我知道Chronoforms也是免费的,它会完全满足你的要求。你可以在10分钟内完成,包括安装时间。另外,您将获得验证和其他功能,如数据卫生,而无需自己编写


从您发布的代码判断,您正在走向XSS和SQL注入攻击。帮自己一个忙,得到一个有效的扩展。

这里有一个简单的答案-

有2页的表单生成器。我知道Chronoforms也是免费的,它会完全满足你的要求。你可以在10分钟内完成,包括安装时间。另外,您将获得验证和其他功能,如数据卫生,而无需自己编写


从您发布的代码判断,您正在走向XSS和SQL注入攻击。帮自己一个忙,得到一个有效的扩展。

您的SQL中有一个错误。这:

$query = "INSERT INTO '#__pdfemails' ('emailaddress')
VALUES ('thevalue')";
应该是这样的:

$query = "INSERT INTO '#__pdfemails' (emailaddress)
VALUES ('thevalue')";
请注意,列名周围缺少单引号


如果您再次遇到这样的错误,请首先尝试直接在MySQL中执行SQL。在Joomla环境中,可能有许多错误被“隐藏”的点。对于实时站点来说,这是非常明智的,尽管您应该能够配置开发站点来显示SQL错误,以便于故障排除。

您的SQL中有一个错误。这:

$query = "INSERT INTO '#__pdfemails' ('emailaddress')
VALUES ('thevalue')";
应该是这样的:

$query = "INSERT INTO '#__pdfemails' (emailaddress)
VALUES ('thevalue')";
请注意,列名周围缺少单引号


如果您再次遇到这样的错误,请首先尝试直接在MySQL中执行SQL。在Joomla环境中,可能有许多错误被“隐藏”的点。对于实时站点来说,这是非常明智的,尽管您应该能够配置开发站点以显示SQL错误,以便于故障排除。

您遇到了哪种错误?你收到警告了吗?哦,我在值中插入了这个值,只是想看看它是否会写出来,但它没有:-/What-does$db->query;回来旁白:不要将=&用于对象分配,只需写=w/o&,此处不需要引用/别名。查询失败。阅读DB对象的API文档,看看如何检索错误消息。@hakre@alfasin谢谢大家。我在没有使用API、连接到DB和编写SQL查询的情况下进行了尝试,结果成功了。似乎是语法$query=INSERT INTO uu pdfemails emailaddress有问题在上面的示例中,emailaddress周围有引号。我删除了它们,它工作了。你得到了哪个错误?你收到警告了吗?哦,我在值中插入了这个值,只是想看看它是否会写出来,但它没有:-/What-does$db->query;回来旁白:不要将=&用于对象分配,只需写=w/o&,此处不需要引用/别名。查询失败。阅读DB对象的API文档,看看如何检索错误消息。@hakre@alfasin谢谢大家。我在没有使用API、连接到DB和编写SQL查询的情况下进行了尝试,结果成功了。似乎是语法$query=INSERT INTO uu pdfemails emailaddress有问题在上面的示例中,emailaddress周围有引号。谢谢@Brent Friar,但我不确定Chrono Forms是否能满足我的需要。我以前也用过几次,但为此,我需要一个电子邮件地址来允许PDF下载,然后设置一个cookie来记住用户已经提交了他们的电子邮件,所以我需要为此定制。不过谢谢你的建议:ChronoForms绝对可以做到这一点。你甚至可以从GreyHead的论坛上下载一个定制的表单操作,这样你就可以很容易地在发送的电子邮件中添加一个静态附件。然后您只需使用自定义代码事件来设置cookie。其他一切都是内置的。谢谢@Brent Friar,但我不确定Chrono Forms是否能满足我的需要。我以前也用过几次,但为此,我需要一个电子邮件地址来允许PDF下载,然后设置一个cookie来记住用户已经提交了他们的电子邮件,所以我需要为此定制。不过谢谢你的建议:ChronoForms绝对可以做到这一点。甚至还有一个定制的表单动作,你可以从GreyHead的论坛下载,这是m
可以轻松地将静态附件添加到发送的电子邮件中。然后您只需使用自定义代码事件来设置cookie。其他一切都是内置的。顺便说一句,我部分同意布伦特的观点:代码中的漏洞。不过,我对获得第三方附件并不完全同意——做任何最有意义的事,但要确保你做得正确!谢谢鲍比·杰克。就这样。顺便说一句,我部分同意布伦特的观点:代码中的漏洞。不过,我对获得第三方附件并不完全同意——做任何最有意义的事,但要确保你做得正确!谢谢鲍比·杰克。就这样。现在工作很好。