3
从字面上看不出一个更好的方式来描述这个。从mysql查询中交换信息
所以,我需要更新数据库中的两列,并让它们交换一些信息。我觉得这可以简单地完成,我一直在想它 - 主要是因为现在整个事情都是通过PHP类中的3个不同的函数完成的(见下文)。
function hotSinglesInYourArea()
{
$sql = "SELECT
citizens.cid as id,
citizens.gender as gender
FROM
citizens
WHERE
citizens.status <> 'married'";
$que = $this->db->prepare($sql);
$data = [];
try {
$que->execute();
while($row = $que->fetch(PDO::FETCH_ASSOC))
{
$data[] = $row;
}
}catch(PDOException $e){}
return $data;
}
function hookemup()
{
$data = $this->hotSinglesInYourArea();
$count = (count($data))-1;
if($count >= 0)
{
mt_srand(time());
$rand = mt_rand(0,$count);
$citizenA = $data[$rand];
sleep(1);
mt_srand(time());
$rand = mt_rand(0, $count);
$citizenB = $data[$rand];
if($citizenA['gender'] <> $citizenB['gender'])
{
$this->getMarried($citizenA['id'],$citizenB['id']);
}
else
{
#echo $citizenA['id'].'|'.$citizenB['id'];
sleep(2);
}
}
}
function getMarried($a, $b)
{
$sql = "UPDATE
citizens
SET
partner = :a,
status = 'married'
WHERE
cid = :b;
UPDATE
citizens
SET
partner = :b2,
status = 'married'
WHERE
cid = :a2";
$que = $this->db->prepare($sql);
$que->bindParam(':a', $a);
$que->bindParam(':a2', $a);
$que->bindParam(':b', $b);
$que->bindParam(':b2', $b);
try { $que->execute(); $que->nextRowset(); } catch(PDOException $e){}
}
所以这些功能(我appoligize他们的名字,我只是用的东西我还记得)都有助于一个目的 - 他们发现“公民”是不是结婚了,然后他们结婚。 hotSinglesInYourArea找到单身的人,Hookemup随机选择一个,然后得到结婚实际上改变了DB。
正如我已经说过我不知道是否有一种方法,我在寻找,这将使在一个单一的功能这项工作(或至少更少的功能)
问题是什么?看起来你已经有了更新 –