В настоящее время я пытаюсь создать систему, которая случайным образом выбирает пользователя из таблицы "пользователи" и добавляет его к другой таблице "согласен" или "не согласен" в зависимости от того, имеет ли пользователь значение "мнение" "нравится". или "неприязнь". Я делаю это с помощью $ row, чтобы выбрать полную строку, где у пользователя есть мнение "like", но, похоже, он не добавляет данные, хранящиеся в "$ row [username]", в столбец "user" таблицы "согласен" или "не согласен".
Я уже пытался сохранить значение '$ row [' username '] в качестве переменной и использовать его в аспекте значения запроса, но, похоже, это не сработало. Я также попытался объединить запросы INSERT и SELECT, и это все еще не имеет никакого эффекта. Может кто-нибудь сказать мне, что я делаю не так, пожалуйста? :)
if($_SESSION['pageLoaded'] != "true") {
$selectLikesQuery = "SELECT * FROM users WHERE opinion = 'like' ORDER BY RAND() LIMIT 1";
$likeSelectorResult = mysqli_query($userConnect, $selectLikesQuery);
while($row = mysqli_fetch_assoc($likeSelectorResult)) {
$removeCurrentAgreeContent = "TRUNCATE TABLE agreeUser";
$addAgreeUserQuery = "INSERT INTO agreeUser (user) VALUE ('$row[username]')";
mysqli_query($chatConnect, $removeCurrentAgreeContent);
mysqli_query($chatConnect, $addAgreeUserQuery);
}
$selectDislikesQuery = "SELECT * FROM users WHERE opinion = 'dislike' ORDER BY RAND() LIMIT 1";
$dislikeSelectorResult = mysqli_query($userConnect, $selectDislikesQuery);
while($row = mysqli_fetch_assoc($dislikeSelectorResult)) {
$removeCurrentDisagreeContent = "TRUNCATE TABLE disagreeUser";
$addDisagreeUserQuery = "INSERT INTO disagreeUser (user) VALUE ('$row[username]')";
mysqli_query($chatConnect, $removeCurrentDisagreeContent);
mysqli_query($chatConnect, $addDisagreeUserQuery);
}
$_SESSION['pageLoaded'] = "true";
}
Мне нужно, чтобы имя пользователя из 'users' было вставлено в столбец 'user' в 'acceptuser'. Спасибо за любую помощь, и извинения, если я делаю что-то глупое :)
Почему бы вам не использовать представления SQL, чтобы просто увидеть необходимые данные в "виртуальной таблице", вместо создания дублированных данных?
Представления - очень полезная функция.
Например, сделайте запрос SELECT, чтобы найти нужные строки:
SELECT * FROM users WHERE opinion = 'dislike'
Если этот выбор вам подходит, просто добавьте:
CREATE OR REPLACE VIEW v_agreeUsers AS SELECT * FROM users WHERE opinion = 'dislike'
И сделайте то же самое для пользователей, которые согласны:
CREATE OR REPLACE VIEW v_disagreeUsers AS SELECT * FROM users WHERE opinion = 'like'
Если честно, я не понимаю, почему вы делаете случайный выбор и вставляете пользователей только один за другим.
Если вы хотите получить только одного и случайного пользователя, просто запустите этот запрос после того, как вы уже создали представления, упомянутые выше:
SELECT * FROM v_agreeUsers ORDER BY RAND() LIMIT 1
SELECT * FROM v_disagreeUsers ORDER BY RAND() LIMIT 1
Удачи! :)