2016-11-21 78 views
1

我想从C++数据保存到PHP和这里是我为什么我不能从C++向PHP发送多个参数?

string cmd = "wget localhost/tem1.php?t=1&date=1&time=1"; 
    system((const char*) cmd.c_str()); 

,你可以看到我想给参数t,日期和时间,但它只是先将T无两个其他参数,这里是输出:

--2016-11-21 20:56:45-- http://localhost/tem1.php?t=1 
Resolving localhost (localhost)... ::1, 127.0.0.1 
Connecting to localhost (localhost)|::1|:80... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 5 [text/html] 
Saving to: 'tem1.php?t=1' 

为什么只需要t?请帮我解决这个问题 *注: 当我把它写在链接栏,将插入数据成功 谢谢

+1

'to_string(temperature)'的结果是什么?会不会有特殊的角色? 'date'和'time'是一个有效的字符串吗? – Jeff

+0

您是否尝试输出'cmd'来查看它是什么? – AbraCadaver

+0

@Jeff温度是一个浮点数,但我将它转换为字符串才有效,当我打印cmd时,它给了我这个'tem1.php?t = 4&date = 3&time = 1',并忽略了其他参数(日期和时间) –

回答

3

如果这是一个Unix/Linux系统上,原因是符号&

execl("/bin/sh", "sh", "-c", command, (char *) 0); 
system通过执行壳

的系统()库函数使用fork(2),以创建子进程执行使用EXECL(3)如下在命令中指定的外壳命令执行的命令

系统()在命令完成后返回。

shell将&解释为将命令放入后台。为防止出现这种情况,您必须用引号将参数包装起来

string cmd = "wget \"localhost/tem1.php?t=" + to_string(temperature) + "&date=" + date + "&time=" + time + "\""; 

这会告诉shell只留下&符号。

+0

它的工作原理!谢谢 –

相关问题