2011-05-10 76 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...] '