Php 为什么我的自定义IPN处理脚本停止执行?

Php 为什么我的自定义IPN处理脚本停止执行?,php,pdo,paypal-ipn,Php,Pdo,Paypal Ipn,我正在用PHP构建一个自定义IPN处理程序,该处理程序验证Paypal在回发中发送的数据,然后将其中的一部分插入sqlite数据库 剧本的每一部分以前都是有效的。 事务被报告为有效,并被记录。所有操作都正常,直到第32行,它调用了一个自定义函数 这是第32行: $sql=插入\u查询\u builderPP\u数据,$keywords 下面是如何在一个需要的文件中定义函数: 这个代码已经运行了。它生成的SQL语句随后用于数据库,它负责数据库中的一行 即便如此,现在它还是默默地失败了。否则,脚本会

我正在用PHP构建一个自定义IPN处理程序,该处理程序验证Paypal在回发中发送的数据,然后将其中的一部分插入sqlite数据库

剧本的每一部分以前都是有效的。 事务被报告为有效,并被记录。所有操作都正常,直到第32行,它调用了一个自定义函数

这是第32行: $sql=插入\u查询\u builderPP\u数据,$keywords

下面是如何在一个需要的文件中定义函数:

这个代码已经运行了。它生成的SQL语句随后用于数据库,它负责数据库中的一行

即便如此,现在它还是默默地失败了。否则,脚本会起作用

您可以找到所使用的所有三个文件以及日志文件的完整副本。 如您所见,在自定义函数之后,它不会向日志写入任何内容

当我把最后一个工作文件放在它后面时,它就停止工作了

有什么想法吗?执行php-f IPNrx.php不会给出任何输出,并且会像应该的那样记录一个无效的事务,但它不会测试该逻辑分支

编辑:有三个问题,其中两个是致命的,一个是潜在的

首先,if语句应为if$num!=计算$keywords-1,而不是$num!=计数$keywords-1

其次,$db对象不在函数的作用域内,因此我需要在函数顶部添加全局$db

第三,结尾附近有一个额外的下划线$sql=$sql\u 1$_sql_2;应该是$sql=$sql\u 1$sql_2


非常感谢你们。如果没有您的帮助,我永远也找不到这些变量。

此行引用了一个不存在的变量:

$sql = $sql_1 . $_sql_2;
应该是:

$sql = $sql_1 . $sql_2;

因此,该查询无效。例如,您应该在执行SQL查询mysql\u错误后检查输出。

oh hey!那有多久了?谢谢你的帮助。然而,我进去修理了它,并再次测试了它。它仍然像以前一样在第32行默默地停止执行。我将尝试将调试金丝雀放入正在调用的函数中。我来看看是否能得到有用的东西。好吧,在if语句的else部分中,右括号已经处理好了。但那个额外的下划线绝对是一个错误problem@FitzmorrisPR例如我忽略了那件事。修正了。我之前已经检查过了,但是除了关于设置时区的警告之外,没有任何有用的东西。不过,我用tail检查它,现在我发现我漏掉了一大堆致命错误,都与定义自定义函数的文件第48行的“不支持的操作数”有关。奇怪的是,第48行只是一个if语句。如果$num!=计数$keywords-1{错误在三小时前才开始出现。我发现了我认为是原来的问题。那些if语句应该是:if$num!=count$keywords-1另外,由于某种原因,$db对象在函数中不可用。我必须通过$GLOBALS数组访问它。这意味着我的每个地方都有$db->quote$somevar我需要$GLOBALS['db']->在做了这两个更改之后引用$somevar,并且去掉乔治·康明斯指出的错误下划线,一切都很好。你不需要将所有内容都更改为$GLOBALS['db'],只需在函数顶部写下全局$db;,就可以将其导入当前范围。哦!更好了。谢谢!
$sql = $sql_1 . $sql_2;