2014-09-03 97 views
0

我想发送两个值到我的服务器输入到同一行中的数据库,我遇到的问题是它不可能发送这两个值在一个请求中。所以我想要做的是将这两个值分别发送到不同的请求中,但是一次在服务器上处理它们,这样我就可以将这些值作为一个条目添加到数据库中。我的PHP不是很强大,我不知道如何去做这件事。可能吗?我会怎么做?发送两个POST Ajax请求,服务器立即处理它

这是我到目前为止有:

<?php 

$user = "user"; 
$pass = "pass"; 
$table = "database"; 


if(isset($_POST['currentUser'])) 
{ 
$userID = 'currentUser'; 
} 

if(isset($_POST ['e.regid'])) 
{ 
$regid = 'e.regid'; 
} 


if ($regid && $userID != null) 
{ 
$con = mysqli_connect("localhost", $user, $pass); 
mysqli_select_db($con, $table); 
if (mysqli_connect_errno$con)) 
{ 
    echo "Error connecting to the DB: " . mysqli_connect_errno()); 
} 
else 
{ 
    "INSERT INTO gek_devices('regid', 'pin') VALUES ($regid, $userID)"; 
} 
} 
+1

你正在构建一个sql字符串,而不分配给任何地方。这意味着你永远不会执行任何查询。即使你正在执行它,你也会遇到语法错误,并且容易受到[sql注入攻击](http://bobby-tables.com)的影响。 – 2014-09-03 21:58:27

+0

不,这是不可能的。另外为什么'我遇到的问题是无法在一个请求中发送这两个值。 – 2014-09-03 21:59:05

+0

Marc我意识到这个漏洞,并会在它上线之前修复它,谢谢你提到它。 – geolaw 2014-09-03 22:11:42

回答

2

没有,由于网络延迟和不可靠还有的甚至没有任何保证,这两个要求都不会到达服务器,更不用说一分钟之内分开,更不用说您可以在处理这两个请求之后运行代码。实际上,由于在* nix上默认的Apache安装会预先安装10个“备用”实例,所以两个请求甚至不会被服务器上的同一个Apache进程处理的机会超过90%。

如果您需要同时处理数据,则需要在同一请求中发送它们,这是保证atomicity的唯一方法。

您的预期解决方案是完全不可能的,但也是一个明显的XY problem。解决为什么你现在不能同时发送这些值,而不是专注于随后的解决方法。

+0

+1,用于添加链接 – 2014-09-03 22:00:47

+0

,因为其中一个值位于插件中,该插件不允许我注入或调用保存另一个值的服务以便在相同的请求中发送。所以我试图找到解决方法。 – geolaw 2014-09-03 22:09:39

+0

我看了XY的问题,你完全正确,如果我没有花3天的时间,我不会寻找解决方法,如果我可以让插件返回/调用其中一个我需要的价值观会很好。然而,这对我来说是不可能的。 – geolaw 2014-09-03 22:34:30