PHP执行命令"at"到运行一个SQL查询问题

PHP execute the command "at" to run a SQL query problems

我有一个从 PayPal IPN 调用的 PHP 脚本。当用户从我的站点购买东西时,IPN PHP 脚本会在 mysql 数据库中创建用户。 24 小时后,需要从数据库中删除该用户。我假设使用 "at" 命令会起作用。我相信我 运行 遇到的问题是关于我命令中的括号。

<?php
$email = "buyer@gmail.com";
$cmd = 'mysql -u username -pPassword -e `DELETE FROM db.users WHERE users.email = "$email";`|at tomorrow';
exec($cmd);
?>

如果我按原样 运行 此页面,它会抛出以下错误:

warning: commands will be executed using /bin/sh
sh: 1: DELETE: not found
mysql: option '-e' requires an argument
job 38 at Sun Feb  8 04:59:00 2015

这就是让我相信我的引号和括号有问题的原因。

你应该解释你 运行 遇到的问题。我注意到的第一件事是您使用单引号 - 单引号不解释内部字符串,因此 $email 不会被替换为电子邮件值。

其次 - 您正在使用反引号。该命令在 bash shell 中执行,其中您的查询周围的反引号被解释为 shell 命令。试试这个: $cmd = "echo mysql -u username -pPassword -e \'DELETE FROM db.users WHERE users.email = \\"$email\\"\' |at tomorrow";

试试这个:

"mysql -u username -pPassword -e `DELETE FROM db.users WHERE users.email = '$email'`|at tomorrow";