通过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";
    }