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";
我有一个从 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";