【问题标题】:Execute the following via php's exec() command通过 php 的 exec() 命令执行以下命令
【发布时间】:2012-01-18 15:24:07
【问题描述】:
exec('mysql --execute "GRANT ALL PRIVILEGES ON database.* TO 'user'@'122.169.XXX.XX' IDENTIFIED BY 'password'"');

但它给出了一个错误!

Parse error: syntax error, unexpected T_STRING

格式应该被保留,因为它需要与它在 shell 中的执行方式相同

【问题讨论】:

  • 看看你的字符串。您可以使用代码着色来查看问题所在。
  • 事件 stackoverflow markdown 指出你的错误。
  • 我假设这是对此的跟进:stackoverflow.com/questions/8911916/remote-mysql-ip-access。如果您在共享主机(标准网站主机)上,这将不起作用!提出一个你真正想要实现的问题,让人们告诉你实现这一目标的正确方法。这种一点一点的问题是没有用的。
  • @Chronial,是的,想要通过 .php 文件在 Cpanel 的远程 mysql 中添加新 IP 的功能相同
  • 这是您的服务器,还是共享主机?

标签: php mysql


【解决方案1】:

你必须转义'

exec('mysql --execute "GRANT ALL PRIVILEGES ON database.* TO \'user\'@\'122.169.XXX.XX\' IDENTIFIED BY \'password\'"');

【讨论】:

  • 呃,可能是我们的答案,这取决于实际的意图。 +1!
【解决方案2】:

您的 php 字符串以单引号开头。在您的查询中间,您用单引号停止它。你需要逃脱他们。

exec('mysql --execute "GRANT ALL PRIVILEGES ON database.* TO \'user<'@<'122.169.XXX.XX<' IDENTIFIED BY \'password\'"');

【讨论】:

    【解决方案3】:

    您需要使用. 来连接字符串。

    该行应为:

    exec('mysql --execute " GRANT ALL PRIVILEGES ON database.* TO ' . user. '@ 122.169.XXX.XX  IDENTIFIED BY ' . password . '"');
    

    【讨论】:

    • 如果 userpassword 应该是变量,你忘记了美元符号!
    【解决方案4】:

    你需要转义你的字符串:

    exec('mysql --execute "GRANT ALL PRIVILEGES ON database.* TO \'user\'@\'122.169.XXX.XX\' IDENTIFIED BY \'password\'"');
    

    欲了解更多信息,请阅读:http://www.php.net/manual/en/language.types.string.php

    【讨论】:

      【解决方案5】:

      你需要转义你的字符串:

      转义:

      exec('mysql --execute "GRANT ALL PRIVILEGES ON database.* TO \'user\'@\'122.169.XXX.XX\' IDENTIFIED BY \'password\'"');
      

      【讨论】:

        猜你喜欢
        • 2013-09-07
        • 2012-08-18
        • 2017-05-06
        • 2013-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-21
        相关资源
        最近更新 更多