我有一个users.db(userId,mmbrship,mmbrship_date)还有一些值,但这些是我需要更新的。
然后我有payment.db(id,txnid,payment_amount,payment_status,itemid,createdtime)
在我的functions.php中,我有这段代码:
function updatePayments($data){
global $link;
if(is_array($data)){
$sql = mysql_query("INSERT INTO `payments` (txnid, payment_amount, payment_status, itemid, createdtime) VALUES (
'".$data['txn_id']."' ,
'".$data['payment_amount']."' ,
'".$data['payment_status']."' ,
'".$data['item_number']."' ,
'".date("Y-m-d H:i:s")."'
)", $link);
return mysql_insert_id($link);
}
}
我需要将来自payments.db的值'itemid'和'createdtime'插入'mmbrship'中的users.db,'mmbrship_date'
我需要将users.db中的'userId'插入到payments.db中 (将用户连接到其购买)
这样我就可以从users.db获取信息,如果会员已经支付了会员资格,而且现在是payments.db会插入自己的ID。 所以我想如果我能用userId连接这两个表,我可能是朝着正确方向迈出的一步......
?请帮助:)
答案 0 :(得分:0)
您的数据库设计似乎缺少user
实体与payment
实体之间的关系。
(在ER建模术语中,一个实体(大致)是一个可以唯一识别的人,地点,事物,概念或事件,我们需要存储有关信息并且很重要......)
为了确定实体之间关系的基数,我们会提出一系列问题,例如:
user
可以与多个payment
相关吗?
user
可以与零payment
相关吗?
单个payment
可以与多个user
相关吗?
根据这些(和类似)问题的答案,我们可以确定user
和payment
之间的关系是一对一,一对多还是多对 - 很多,以及它是强制的还是可选的。
我怀疑在您的模型中,payment
只与一个user
相关联。 (也就是说,给定的payment
不会应用于多个user
。)并且给定的user
有可能有零个,一个或多个payment
{1}}。
如果是这种情况,那就是一对多的关系,而规范模式是将user
实体的主键存储为{{1表,以及定义外键关系。
e.g。
payment
然后,在向 ALTER TABLE payment ADD `userId` INT UNSIGNED COMMENT 'fk ref user' ;
ALTER TABLE payment ADD CONSTRAINT FK_payment_user
FOREIGN KEY (userId) REFERENCES user (userId)
ON UPDATE CASCADE ON DELETE RESTRICT ;
表中插入行之前,您需要确定与此相关的payment
,并为user
列提供值以建立此付款与其相关的用户之间的关系。
如果userId
与payment
无关,则在列中存储NULL值。如果您希望要求 user
与用户相关,请在列上添加payment
约束。
NOT NULL
中userId
列的数据类型应与payment
中userId
列的数据类型相匹配。 (在上面的示例中,我只是猜测了user
列的数据类型。)
在关系数据库中,通过在两个表的列中存储 common 值来建立两个不同表中行之间的关系。