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。
正如我已經說過我不知道是否有一種方法,我在尋找,這將使在一個單一的功能這項工作(或至少更少的功能)
問題是什麼?看起來你已經有了更新 –