Как использовать результат SQL в OCI_BIND_BY_NAME - PullRequest
0 голосов
/ 08 декабря 2018

Я новичок в связи.Я хочу использовать результат из SQL в качестве данных для вставки в другую таблицу в БД.Вот мой код

      $search = "SELECT STAFF_ID FROM LIBRARIAN WHERE LIB_ID = $_id";
      $querysearch = oci_parse($link, $search) or die ("Query failed");
      oci_execute($querysearch);

       oci_result($querysearch, 'STAFF_ID');

      $sqllib="INSERT INTO LIBRARIAN(LIB_ID, LIB_NAME, LIB_CONTACT, STAFF_ID) VALUES (:id, :name, :contact, :staff)";
      $querylib=oci_parse($link, $sqllib) or die ("error insert Librarian");

      oci_bind_by_name($querylib, ':staff', $querysearch);
      oci_bind_by_name($querylib, ':id', $lib_id);
      oci_bind_by_name($querylib, ':name', $lib_name);
      oci_bind_by_name($querylib, ':contact', $lib_contact);

Но знаете ли вы, как я могу использовать идентификатор персонала, полученный из оператора select, и вставить его в другую таблицу, и как мне связать?

Из этого кода я получаю ошибку

Предупреждение: oci_bind_by_name (): неверная переменная, используемая для привязки в C: \ xampp \ htdocs \ SYSTEM \ admin-insert-lib.phpна линии 216

С твоей помощью мне бы это очень помогло.И я очень ценю это.

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Я вижу две проблемы, которые, вероятно, вызывают эту проблему:

  1. Требуется oci_fetch() вызов для чтения строки результата запроса, чтобы она была доступна для oci_result
  2. $querysearch не устанавливается в STAFF_ID, возвращаемый вашим $search запросом SELECT

Чтобы устранить эти проблемы, попробуйте следующее:

oci_execute($querysearch);
oci_fetch($querysearch);
$staff_id = oci_result($querysearch, 'STAFF_ID');

Затем передайте эту $staff_id в строку oci_bind_by_name в вашем запросе INSERT следующим образом:

oci_bind_by_name($querylib, ':staff', $staff_id);

Редактировать: я предполагаю, что ваши $ lib_id, $ lib_name и $Переменные lib_contact определены вне этого фрагмента, а также имеют допустимые значения для: id,: name и: contact.

0 голосов
/ 08 декабря 2018

Вместо использования insert staffid, я использовал для обновления col только с помощью где условие

 $sqllib="INSERT INTO LIBRARIAN(LIB_ID, LIB_NAME, LIB_CONTACT) VALUES (:id, :name, :contact)";
          $querylib=oci_parse($link, $sqllib) or die ("error insert Librarian");

          //oci_bind_by_name($querylib, ':staff', $try);
          oci_bind_by_name($querylib, ':id', $lib_id);
          oci_bind_by_name($querylib, ':name', $lib_name);
          oci_bind_by_name($querylib, ':contact', $lib_contact);

          oci_execute($querylib);

          $query = "UPDATE LIBRARIAN SET STAFF_ID = (SELECT STAFF_ID FROM LIBRARIAN WHERE LIB_ID = '$_id') WHERE LIB_ID = '$lib_id'";
          $Query1 = oci_parse($link, $query);
          oci_execute($Query1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...