好的朋友,
我有两张桌子
第一张表:social_networks
第二张桌子:members_social_accounts
在用户控制面板中,我有一个页面包含form
,其中列出了所有社交网络;在每个人的前面都有一个input
文本框。
当会员打开该页面时,他会看到列出的所有社交网络,如果他之前在任何社交网络中添加了他的帐户,那么他将在文本框中看到它,否则,文本框将为空。我使用了以下代码:
$s = mysqli_query($link, "SELECT social_networks.network_id, social_networks.network_name, members_social_accounts.member_account FROM social_networks LEFT JOIN members_social_accounts ON social_networks.network_id = members_social_accounts.network_id AND members_social_accounts.member_id = '$member_id' ORDER BY social_networks.network_id");
while($i = mysqli_fetch_assoc($s)){
$network_id = $i['network_id'];
$network_name = $i['network_name'];
$member_account = $i['member_account'];
}
,输入框为:
<?=$network_name;?> = <input type="text" name="ids[<?=$network_id;?>]" id="<?=$network_id;?>" value="<?=$member_account;?>" /><br />
现在,我要做的是当用户更新页面(提交表单)时,我希望代码通过以下步骤更新数据库:
If
该成员(例如$member_id =1
)已将其帐户添加到该网络(例如$network_id = 1
)然后,我们将UPDATE
members_social_accounts
表使用会员网络帐户(例如$member_account = 1111111111
)。因此,我不要为相同的member_id
和相同的network_id
但添加具有不同帐户值的新记录。所以,数据库表将是这样的:
else
如果该成员(例如$member_id=1
)正在向网络添加新帐户(例如$member_account = 2222222222
)(例如$network_id = 3
),那么我想INSERT
1}}将members_social_accounts
表作为新记录,表格将如下所示:
到目前为止我尝试的是以下内容:
<?php
if(isset($_POST))
{
foreach($_POST['ids'] AS $ids)
{
$s = mysqli_query($link, "SELECT * FROM members_social_accounts WHERE network_id = '{$ids}' AND member_id = '$member_id'");
echo $n = mysqli_num_rows($s);
if($n == 1)
{
// UPDATE the members_social_accounts table
}
else
{
// INSERT a new record in members_social_accounts table
}
}
}
?>
但我遇到的问题是$_POST[ids] AS $ids
正在获取member_account
(例如aaaaaaaaaa
和bbbbbbbbbb
)而不是获得netword_id
(例如{{} 1}}和1
)。因此,我无法在2
表格中update
或insert
。
感谢您帮助我指出我的代码或逻辑有什么问题。
提前致谢
P.S。您可以从以下链接下载文件和数据库的副本: sample files and db
答案 0 :(得分:0)
这是因为输入的实际值是member_account
字段。
<input type="text" name="ids[<?=$network_id;?>]" id="<?=$network_id;?>" value="<?=$member_account;?>" />
查看已从value
变量分配回来的$member_account
。
你可以这样做:
<input type="hidden" name="nid" value="<?=$network_id;?>"/>
然后,您可以$_POST['nid']
获取network id
的真实价值。