通过php文件在表中插入唯一数据
我想在查看的通过php文件在表中插入唯一数据,php,mysql,Php,Mysql,我想在查看的联系人表中插入数据,其中成员id可以相同,这意味着一个成员可以查看多个联系人,但联系人成员id应该是唯一的 我正在通过url使用请求参数id,请参见下文 create table member( member_id int not null auto_increment, member_name varchar(50) not null, look_contact_number int(4) default 5, primary key(member_id) ) create ta
联系人
表中插入数据,其中成员id
可以相同,这意味着一个成员可以查看多个联系人,但联系人成员id
应该是唯一的
我正在通过url使用请求参数id,请参见下文
create table member(
member_id int not null auto_increment,
member_name varchar(50) not null,
look_contact_number int(4) default 5,
primary key(member_id)
)
create table contact_viewed(
contact_viewed_id int(11) not null auto_increment,
contacted_member_id int (11) not null,
member_id int(11) not null,
primary key(contact_viewed_id)
);
首先,如果member\u id=2
在表成员中没有数据,我会采取条件,然后在表中插入数据,然后我会通过rowCount()
方法进行检查,如果member\u id=2
在成员表中有数据,然后检查联系的\u member\u id
在数据库中是否可用,如果可用,则什么都不做,如果不可用,则将数据插入数据库
我的问题是当执行foreach
循环时,它会在id!=联系成员id
,如果有人有想法,请帮助我
/contact_viewed.php?id=1;
试试这个:
<?php
$stmt7 = $DB_con->prepare ( "SELECT * FROM contact_viewed WHERE member_id=:member_id" );
$stmt7->bindParam ( ":member_id", $m_id );
$stmt7->execute ();
$row2 = $stmt7->fetchAll ();
if ($stmt7->rowCount () > 0) {
foreach ( $row2 as $data ) {
if ($data ['member_id'] == $m_id) {
if($data ['contacted_member_id'] == $_GET['id']){
echo "do nothing1";
}
else{
$stmt6 = $DB_con->prepare ( "INSERT INTO contact_viewed(contacted_member_id,member_id) VALUES(:contacted_member_id,:member_id)" );
$stmt6->bindParam ( ":contacted_member_id", $_GET ['id'] );
$stmt6->bindParam ( ":member_id", $m_id );
$stmt6->execute ();
echo "hello";
}
}
}
}
else{
$stmt6 = $DB_con->prepare ( "INSERT INTO contact_viewed(contacted_member_id,member_id) VALUES(:contacted_member_id,:member_id)" );
$stmt6->bindParam ( ":contacted_member_id", $_GET ['id'] );
$stmt6->bindParam ( ":member_id", $m_id );
$stmt6->execute ();
$available_contact = $userRow ['available_contact'];
$available_contact = $available_contact - 1;
$stmt5 = $DB_con->prepare ( "UPDATE member SET available_contact=:available_contact WHERE member_id=:member_id" );
$stmt5->bindParam ( ":available_contact", $available_contact );
$stmt5->bindParam ( ":member_id", $m_id );
$stmt5->execute ();
echo "ok ok";
}
?>
仅供参考(可能无法解决您的问题),PDO手册指出rowCount()
对SELECT
语句不可靠,建议不要在该实例中使用它。对于select,最好使用COUNT()
语句。@Rasclatt谢谢您的回复,这对我很有帮助,先生,如果我要发送代码,请您检查一下,我可以收到您的电子邮件吗?i您想让我给您发电子邮件,以便您可以将代码发送给我吗?这就是你的建议吗?是的,我想让你的电子邮件id发送代码对不起,不。我不能查看你的代码。我对你一无所知,也不知道你的主机是如何设置的。我不知道你是否会给我发垃圾邮件,或者你做了什么。很抱歉我现在只能帮你渡过难关。@Jevgenjis Sulins,谢谢你的回复,谢谢它正在按我的意愿工作
<?php
$stmt7 = $DB_con->prepare ( "SELECT * FROM contact_viewed WHERE member_id=:member_id AND contacted_member_id=:contacted_member_id" );
$stmt6->bindParam ( ":contacted_member_id", $_GET ['id'] );
$stmt7->bindParam ( ":member_id", $m_id );
$stmt7->execute ();
$row2 = $stmt7->fetchAll ();
if ($stmt7->rowCount () == 0) {
$stmt6 = $DB_con->prepare ( "INSERT INTO contact_viewed(contacted_member_id,member_id) VALUES(:contacted_member_id,:member_id)" );
$stmt6->bindParam ( ":contacted_member_id", $_GET ['id'] );
$stmt6->bindParam ( ":member_id", $m_id );
$stmt6->execute ();
$available_contact = $userRow ['available_contact'];
$available_contact = $available_contact - 1;
$stmt5 = $DB_con->prepare ( "UPDATE member SET available_contact=:available_contact WHERE member_id=:member_id" );
$stmt5->bindParam ( ":available_contact", $available_contact );
$stmt5->bindParam ( ":member_id", $m_id );
$stmt5->execute ();
echo "ok ok";
}