2011-05-10 81 views
2

我试图用shell_exec(在本地主机上)向表中插入一些数据。PHP shell_exec INSERT MySQL

下面是我使用的代码:哪些运行作为

$shellExec = 'C:\wamp\bin\mysql\mysql5.1.36\bin\mysql -h localhost -u root mm_'.$acname.' INSERT INTO account (acct_name,start_date,active,name,address1,address2,postcode,telephone,website,email,vat_number,vat_amount,start_number,currency) VALUES("'.$company.'","'.$start_date.'","'.$active.'","'.$acname.'","'.$address1.'","'.$address2.'","'.$postcode.'","'.$telephone.'","'.$website.'","'.$email.'","'.$vat_number.'","'.$vat_amount.'","'.$start_number.'","'.$currency.'")'; 

shell_exec($shellExec); 

C:\wamp\bin\mysql\mysql5.1.36\bin\mysql -h localhost -u root mm_robdunne22 INSERT INTO account (acct_name,start_date,active,name,address1,address2,postcode,telephone,website,email,vat_number,vat_amount,start_number,currency) VALUES("sdfsdfy","10-05-2011","1","robdunne22","fsdfs","dfsd","sdf","3423423434sdfsdf","cvxcvdfg","gfgh55ydddd","sdfs","sdfgggaacc","1","pound") 

在命令行。

这会失败 - 在命令行上,如果我运行它,它只显示MySQL帮助信息。我认为问题是登录到MySQL和INSERT语句应该是分开的。如果我将它们分开,它们可以很好地工作,但是我不确定如何完成这项工作 - 可以分为两个或一个shell命令。

+4

为什么不使用mysql支持内置到PHP? – 2011-05-10 15:45:20

+0

正确地引用Windows中的命令行参数已经是一项艰巨的任务。你想要做的是有一个名字:受虐狂。 – 2011-05-10 15:53:14

+0

另外,当我们处理它时,您应该查看准备好的语句,并检查$ company等是否正确转义。最后,如果您在共享服务器上,则需要检查其他用户是否无法看到使用任务管理器执行的命令(我认为这就是所谓的窗口,相当于顶级窗口)。 – 2011-05-10 15:53:45

回答

3

从MySQL文档,这里是看起来要完成你所需要的一个例子。

mysql -u root -p --execute="SELECT User, Host FROM mysql.user" 

我希望这有助于。

+0

这是一个很好的答案。 – Tareq 2011-07-17 12:07:40

0

尝试引用'INSERT INTO [...skipped...] '