Я загружаю файлы в свою базу данных с помощью PHP. Сначала все работало, но вдруг перестало. вот мой код
print "<form action='' method='POST' enctype='multipart/form-data'>";
print "<td class='tesname'>". $row['exam_name']. "</td>";
print "<input type='hidden' name='user_id' value='".$_GET['user_id']."'>";
print "<input type='hidden' name='lab_name' value='".$row['exam_name']."'>";
print "<td class='tesdate'><input class='form-control' type='Date' autofocus id='TestDate' placeholder='Test Date' name='testDate'></td>";
print "<td><input type='file' class='file-input' id='myfile' placeholder='Upload' name='myfile'></td>";
print "<td><input type='hidden' name='exam_id' value='".$row['exam_id']."'>
<button type='Submit' class='btn btn-info' name='btn'>upload</button></td>
</form>
а вот PHP-код
$dbh = new PDO("mysql:host=localhost;dbname=ehr_new","root", "");
if (isset($_POST['btn'])){
$name = $_FILES['myfile']['name'];
$type = $_FILES['myfile']['type'];
$data = file_get_contents($_FILES['myfile']['tmp_name']);
$stmt = $dbh->prepare("insert into patinet_examination values(?,?,?,?,?,?,?)");
$stmt->bindParam(1,$_POST['testDate']);
$stmt->bindParam(2,$_POST['exam_id']);
$stmt->bindParam(3,$_POST['user_id']);
$stmt->bindParam(4,$_POST['lab_name']);
$stmt->bindParam(5,$name);
$stmt->bindParam(6,$type);
$stmt->bindParam(7,$data);
$stmt->execute();
print "success";
}
как я уже сказал, все работало нормально, и вдруг запрос отказывается вставляться в базу данных.
также, вот моя структура БД
Спасибо
Хорошо, но что происходит? Какие сообщения об ошибках вы получаете?
Я не получаю никаких сообщений об ошибках. это сбивает с толку. Я собираюсь загрузить изображение структуры базы данных.
поместите блок try catch вокруг кода, возможно, вы получаете исключение.
@Marco извините, я никогда не использовал обработку исключений в php :( неловкий момент
?>, напишите свой HTML и откройте новый блок PHP: <?php. Это упростит чтение вашего кода, а среда IDE также сможет выделять синтаксис HTML.
Добавьте $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); сразу после подключения
Не волнуйся братан, это очень легко и просто. См. php.net/manual/en/language.exceptions.php
Вы вдруг начали загружать очень большие файлы? Я заметил, что вы никогда не смотрите на $_FILES['myfile']['error'], чтобы проверить загруженный файл.
Вижу exam_id уникален, наверное у вас уже есть такой же exam_id уже существующий.
Я получил эту ошибку: Неустранимая ошибка: Uncaught PDOException: SQLSTATE [23000]: нарушение ограничения целостности: 1062 Дублирующаяся запись «21» для ключа «PRIMARY» в C:\xampp\htdocs\ehr\lab-result.php:145 Трассировка стека : #0 C:\xampp\htdocs\ehr\lab-result.php(145): PDOStatement->execute() #1 {main} добавлено в C:\xampp\htdocs\ehr\lab-result.php в строке 145
exam_id — это уникальный ключ, и вы добавляете повторяющийся идентификатор. Это не должен быть первичный ключ, если у вас может быть две строки с одним и тем же exam_id.
И теперь вы научились волшебству обработки исключений :) Вы всегда должны использовать его.
большое спасибо, ребята. теперь он работает, это был первичный ключ. люблю вас всех :D <3






Можете ли вы вывести ошибку, которую вы получаете, а также структуру БД.