Как вставить определенное значение из одной таблицы базы данных в другую, используя '$ row'? - PullRequest
0 голосов
/ 04 апреля 2019

В настоящее время я пытаюсь создать систему, которая случайным образом выбирает пользователя из таблицы «пользователи» и добавляет его к другой таблице «согласник» или «разногласие» в зависимости от того, имеет ли пользователь значение «мнение»:«нравится» или «не нравится».Я делаю это с помощью $ row, чтобы выбрать полную строку, где у пользователя есть мнение «like», но, похоже, он не добавляет данные, хранящиеся в «$ row [username]», в столбец «user»таблицы 'acceptuser' или 'Disagreeuser'.

Я уже пытался сохранить значение '$ 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'.Спасибо за любую помощь, и извинения, если я делаю что-то глупое:)

1 Ответ

0 голосов
/ 04 апреля 2019

Почему бы вам не использовать представления 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

Удачи! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...