PHP-запрос с использованием ассоциации из другого запроса - PullRequest
0 голосов
/ 01 июля 2018

Я пытаюсь ВСТАВИТЬ в свою таблицу SQL в PHP, используя ассоциацию, которую я уже вернулся из предыдущего запроса SELECT. Но компилятор выдает мне синтаксическую ошибку «неожиданный $ EOF».

По сути, это то, что я делаю:

$query2 = "SELECT * FROM users WHERE user_name='$user.username'";
    $result2 = mysqli_query($db, $query2);
    $new_user = mysqli_fetch_assoc($result2);

    $query3 = "INSERT INTO new_table (new_user_id) VALUES('$new_user['user_id']');";
    mysqli_query($db, $query3);

Запрос 3 дает мне ошибку. Я упоминал переменные, как это раньше, с привязкой выборки. Я невероятно новичок в PHP, но разве это не ассоциация, просто создание словаря? Есть идеи?

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Ошибка EOF коротка для end of file, что означает, что PHP не думает, что ваш скрипт заканчивается там, где вы думаете. Это обычно вызвано тем, что блок управления не закрывается, например, {...code ?> без закрытия }.

У вас есть другие проблемы, которые следует решить. Вы не должны использовать переменные в запросах. Вы не можете использовать индекс в кавычках в строке. Вам не нужно выполнять 2 запроса, чтобы делать то, что вы пытаетесь сделать.

INSERT INTO new_table (new_user_id) SELECT user_id FROM users WHERE user_name= ?

Должно быть работа. Используйте это с prepare, bind_param и execute, и ваш код будет намного более безопасным.

  1. http://php.net/manual/en/mysqli.prepare.php
  2. http://php.net/manual/en/mysqli-stmt.bind-param.php
  3. http://php.net/manual/en/mysqli-stmt.execute.php

Вы также можете прочитать больше об этих понятиях здесь, http://php.net/manual/en/mysqli.quickstart.prepared-statements.php.

Также, если вам интересно, как работает этот SQL-запрос, посмотрите это https://dev.mysql.com/doc/refman/8.0/en/insert-select.html.

0 голосов
/ 01 июля 2018

Похоже, проблема в одинарных кавычках в коде ниже:

VALUES('$new_user['user_id']')

Если вы установите переменную вне запроса, то это должно сработать:

$user_id = $new_user['user_id'];
$query3 = "INSERT INTO new_table (new_user_id) VALUES('$user_id');";

Я бы также предложил вам параметризировать ваши запросы.

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