我有一个有两列的表 Action_key
(哪个商店 loggedin
以及 optin
价值观)和 Value
(存储0或1)
我的table有 Id
列自动增量。
更新
下面是我如何通过检查插入条件。
现在我需要一个条件来检查新插入的行是否与最后一条记录的值相同 Uid
, Action_key
以及 Value
,否则应该插入。
$uniquedataoptininArray = array( //except CreatedDate
'Uid'=> $uid,
'Action_key'=> $actionkey,
'Value'=>$login_optin_value
);
$userexists= $this->getUserOptInLogTable()->getOptinLogindetails($uniquedataoptininArray);
if($userexists){
echo 'record exist';
}else{
echo 'To be inserted';
$result = $this->getUserOptInLogTable()->insertdetails($dataArray);
下面的查询给出了最后插入的行-这很好。但我需要知道如何使用下面的查询来检查条件
$qry ="SELECT * FROM UserOptInLog WHERE Uid = ". $uid ." ORDER BY Id DESC LIMIT 1;";
当前问题。
应插入的条件
1) 如果我的下表充满了如图所示的值,那么现在我尝试插入一行 Uid 1608
, ActionKey loggedin
以及 Value 1
,但不是插入。
2) 或者如果我输入一个值 Uid 1608
, Action_key optin
以及 value 1
-它不是插入(理想情况下应该插入)
不应插入的条件
1) 如果我插入 Uid 1608
, ActionKey loggedin
以及 value 0
-与上一行基本相同-不应插入
2条答案
按热度按时间l2osamch1#
您可以在子查询中使用这样的语句
bvuwiixz2#
如果你已经有了
$this->tableGateway->getLastInsertValue()
以及动作键和值"logged_in"
&0
分别的话就不需要关心你的查询了。。。只需检查以下3项(列)匹配的记录:
检查从上述查询返回的记录数:
如果返回null,
INSERT
你的新唱片否则,就不管了
更新
只需检查这3项(列)匹配的uid:
匹配从上述查询返回的uid:
如果它与新的uid(要插入的记录)不匹配,
INSERT
你的新唱片否则,就不管了
也
您可以检查uid的最后一个值:
这将返回目标uid的最后一项。然后你可以匹配
Action_key
以及value
匹配记录的列。。。