Я пытаюсь обновить данные в одной таблице и в то же время вставить новую строку во вторую таблицу из формы PHP.Вставка в одну таблицу при обновлении другого и загрузка файла
При ударе отправить я получаю сообщение об ошибке, говорящее:
Uncaught Error: Call to undefined method mysqli::exec()
Ниже мой запрос на PHP отправить форму:
$link->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
try {
$link->beginTransaction();
$q1 = $link->prepare("INSERT INTO
liquor_licenses_2
( username
, outlet_number
, license_date
, license
, scanned_license
, permit_renewal
, scanned_permit_renewal
, identity_document
, scanned_identity_document
)
VALUES
( :username
, :outlet_number
, :license_date
, :license
, :scanned_license
, :permit_renewal
, :scanned_permit_renewal
, :identity_document
, :scanned_identity_document
");
$q1->bindValue(':username', $username);
$q1->bindValue(':outlet_number', $outlet_number);
$q1->bindValue(':license_date', $license_date);
$q1->bindValue(':liquor_license', $license);
$q1->bindValue(':scanned_license', $scanned_license);
$q1->bindValue(':permit_renewal', $permit_renewal);
$q1->bindValue(':scanned_permit_renewal', $scanned_permit_renewal);
$q1->bindValue(':identity_document', $identity_document);
$q1->bindValue(':scanned_identity_document', $scanned_identity_document);
$q1->execute();
$q2 = $link->prepare("UPDATE
outlet_details
SET
username = :username
, outlet_number = :outlet_number
, mega_region = :mega_region
, outlet_name = :outlet_name
, address_0 = :address_0
, address_1 = :address_1
, address_2 = :address_2
, address_3 = :address_3
, address_4 = :address_4
, contact_number_1 = :contact_number_1
, contact_number_2 = :contact_number_2
WHERE
outlet_number = :outlet_number");
$q1->bindValue(':username', $username);
$q1->bindValue(':outlet_number', $outlet_number);
$q2->bindValue(':mega_region', $mega_region);
$q2->bindValue(':outlet_name', $outlet_name);
$q2->bindValue(':address_0', $address_0);
$q2->bindValue(':address_1', $address_1);
$q2->bindValue(':address_2', $address_2);
$q2->bindValue(':address_3', $address_3);
$q2->bindValue(':address_4', $address_4);
$q2->bindValue(':contact_number_1', $contact_number_1);
$q2->bindValue(':contact_number_2', $contact_number_2);
$q2->execute();
$link->commit();
} catch (Exception $e) {
$link->rollback();
}
if(mysqli_query($link, $q1)){
echo "Records added/updated successfully.";
} else{
echo "ERROR: Could not able to execute $q1. " . mysqli_error($link);
}
header("refresh:2;url=../outlet_capture.php");
// close connection
mysqli_close($link);
?>
Я также хочу, чтобы добавить к этому выгрузку 3 файлов (отсканированная лицензия, scanned_permit_renewal, scanned_identity_document). Я нашел приведенный ниже код, чтобы справиться с этим, но я не уверен, как его реализовать.
foreach($_FILES['file'] AS $key=>$file) {
$filename = $file['tmp_name'];
$size = $file['size'];
$newfile = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . date("Ymd_his") . "_" . $filename;
move_uploaded_file($filename, $newfile);
}
Мне нужно имя файла, который будет храниться в моей БД, так что я могу затем ссылаться на него в файл, который был загружен на сервер.
Спасибо за выше. Я обновил код в соответствии с вашим примером и теперь получаю новое сообщение об ошибке: Обманутая фатальная ошибка: объект класса mysqli_stmt не может быть преобразован в строку. Ошибка относится к этой строке: echo "ERROR: Could not способный выполнить $ q1. ". mysqli_error ($ ссылка); –
Вы работаете с PDO или mysqli? –
MySQLi, в основном, поскольку я вообще не знаком с PDO. Из моего понимания, однако, что вы не можете запускать несколько запросов в MySQLi, как я пытаюсь. –