SQL Запрос работает хорошо, но теперь, когда я пытаюсь использовать его с PHP, запрос не выполняется - PullRequest
0 голосов
/ 27 апреля 2020

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

У меня есть запрос SQL, который отлично работает в phpmyadmin:

BEGIN;
INSERT INTO `webInfo` (`id`, `webItem`, `webDescription`, `webText`)
  VALUES(NULL,'tagheuer Watch','Watch','Watch');
INSERT INTO `valuationNotepad` (`id` ,`valuationNotepad1`, `valuationNotepad2`, `valuationNotepad3`, `valuationNotepad4`) 
  VALUES(LAST_INSERT_ID(),'Watch', 'Watch', 'Watch', 'Watch');
INSERT INTO stock (`id`,`listCost`,`productName`,`totalCost`,`rsp`,`rspDate`,`rspPrev1`,`rspPrev1Date`,`rspPrev2`,`rspPrev2Date`,`rspPrev3`,`rspPrev3Date`,`rspPrev4`,`rspPrev4Date`,`webID`,`valuationNotepadID`,`ringSizeID`,`addedBy`,`dateAdded`,`stockLevel`) VALUES (NULL,30000,'Tagheur Watch',3000,4000,'2020-04-15',50000,'2020-04-15',50000,'2020-04-15',60000,'2020-04-15',65000,'2020-04-15',LAST_INSERT_ID(),LAST_INSERT_ID(),2,'JD',CURRENT_TIMESTAMP,60);
COMMIT;

Как уже говорилось ранее, это прекрасно работает в phpmyadmin. Однако, когда я пытаюсь использовать его с PHP и с PHP переменными, запрос не выполняется. Запрос с PHP переменными показан ниже.

$addStock = "BEGIN;
INSERT INTO `webInfo` (`id`, `webItem`, `webDescription`, `webText`)
  VALUES(NULL,'$webItem','$webDescription','$webText');
INSERT INTO `valuationNotepad` (`id` ,`valuationNotepad1`, `valuationNotepad2`, `valuationNotepad3`, `valuationNotepad4`) 
  VALUES(LAST_INSERT_ID(),'$valuationNotepad1', '$valuationNotepad2', '$valuationNotepad3', '$valuationNotepad4');
INSERT INTO stock (`id`,`listCost`,`productName`,`totalCost`,`rsp`,`rspDate`,`rspPrev1`,`rspPrev1Date`,`rspPrev2`,`rspPrev2Date`,`rspPrev3`,`rspPrev3Date`,`rspPrev4`,`rspPrev4Date`,`webID`,`valuationNotepadID`,`ringSizeID`,`addedBy`,`dateAdded`,`stockLevel`) VALUES (NULL,$listCost,$productName,$totalCost,$rsp,$rspDate,$prevRSP1,$prevRSP1Date,$prevRSP2,$prevRSP2Date,$prevRSP3,$prevRSP3Date,$prevRSP4,$prevRSP4Date,LAST_INSERT_ID(),LAST_INSERT_ID(),2,'JD',CURRENT_TIMESTAMP,$stockAdded);
COMMIT;";

$stockAddedResult = mysqli_query($conn, $addStock);

Я получаю сообщение об ошибке Проверьте руководство, соответствующее вашей MySQL версии сервера, для правильного синтаксиса для использования рядом с 'INSERT INTO webInfo в моем браузере.

Я пытался устранить ошибку на основе того, что в моем запросе была ошибка типа SQL, но теперь я не уверен, что это проблема.

Если у кого-то есть какие-либо мысли по поводу этой проблемы, пожалуйста, сообщите мне.

Спасибо

1 Ответ

1 голос
/ 27 апреля 2020

mysqli_query не поддерживает множественный запрос

Вы должны либо использовать функцию mysqli_mutli_query(), либо изменить свою реализацию, чтобы явно открыть транзакцию, отправить 3 вставки и зафиксировать ее в конце или откатить, если один запрос терпит неудачу

Пример:

<?php
$link = mysqli_connect("localhost", "user1", "datasoft123", "hr");

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_begin_transaction($link, MYSQLI_TRANS_START_READ_ONLY);

mysqli_query($link, "SELECT first_name, last_name FROM actor LIMIT 1");
mysqli_commit($link);

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