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)
);
Я хочу, чтобы вставить данные в таблице, где contact_viewed
member_id
может быть тем же самым, это означает, что один пользователь может видеть несколько контактов, но contacted_member_id
должен быть уникальным.вставка уникальных данных в таблице с помощью PHP-файла
Я использую запрос пары идентификатора в URL смотрите ниже
/contact_viewed.php?id=1;
Сначала я принял условие, если member_id=2
нет данных в элементе таблицы затем вставить данные в таблице, то я проверил по rowCount()
метод, если member_id=2
в таблице участников есть данные, тогда проверьте, contacted_member_id
доступен в базе данных или нет, если он доступен, ничего не делать, если он недоступен, тогда вставьте данные в базу данных.
Моя проблема в том, что цикл foreach
выполняется, тогда он вставляет данные, где id != contacted_member_id
, если у кого-то есть идея, пожалуйста, помогите мне.
<?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";
}
?>
Просто FYI (вероятно, не будет решать ваши проблемы), руководство PDO отмечает, что 'ROWCOUNT()' не надежен на 'заявлений SELECT' и предлагает не использовать его в этом случае. Использование оператора 'COUNT()' является предпочтительным для выбора. – Rasclatt
@Rasclatt Спасибо за ваш отзыв, это очень полезно для меня, сэр. Если я отправлю свой код, можете ли вы его проверить один раз, могу ли я указать свой адрес электронной почты –
. Вы хотите, чтобы я дал вам мой адрес электронной почты, чтобы вы могли отправить мне свой код? Это то, что вы предлагаете? – Rasclatt