EXEC运行一个命令如:
exec ("D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql -h localhost -u root -D test < D:/Program Files/test.sql");
运行失败!
主要原因是因为路径中有空格,后来改成如下:
exec ('D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql -h localhost -u root -D test < "D:/Program Files/test.sql"');
能成功运行,但前面的就处理不了。
在cmd 中就可以这样运行,如下:
"D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql" -h localhost -u root -D test < "D:/Program Files/test.sql"
请问如何处理?

解决方案 »

  1.   


    exec ("\"D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql\" -h localhost -u root -D test < \"D:/Program Files/test.sql\"");把双引号转义一下……
      

  2.   

    你在win 环境,所以 \ 就会产生问题。要使用 \\
      

  3.   


    exec 执行命令是直接向OS发送指令字串,
    跟你在命令行执行是一样的。带入单引号的变量能够执行,是因为你可以在变量中设定双引号字符串,OS通过双引号可以解析出你原先所要执行的命令。
    如果变量需要用双引号,只要将想要带入命令中的双引号escape一下就可以了,如下:exec ("\"D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql\" -h localhost -u root -D test < \"D:/Program Files/test.sql\"");
      

  4.   

    结合chdir函数做个封装的东西可能会方便点.$oldDir = getcwd();
    chdir("D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin");
    exec("mysql -h localhost -u root -D test  < D:/Program Files/test.sql");
    chdir($oldDir);