Я пытаюсь научиться вставлять изображение в phpmyadmin моего структуратора БД:
id int(11) AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
mime VARCHAR(255),
data BLOB
мой код:
<?php
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
$dbh = new PDO("mysql:host=localhost;dbname=mydata", "root", "123456");
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 myblob VALUES('',?,?,?)");
$stmt->bindParam(1,$name);
$stmt->bindParam(2,$type);
$stmt->bindParam(3,$data);
$stmt->execute();
}
?>
<form method = "post" enctype = "multipart/form-data">
<input type = "file" name = "myfile" />
<button name = "btn">Upload</button>
</form>
моя ошибка при отправке:
Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '' for column `mydata`.`myblob`.`id` at row 1
Есть идеи, что не так при попытке загрузить файл png?
если я исправлю VALUES(?,?,?), теперь я получаю эту ошибку: ``` SQLSTATE [21S01]: список вставляемых значений не соответствует списку столбцов: 1136 количество столбцов не соответствует количеству значений в строке 1 ```
Если вы отбросите поле идентификатора, вам нужно указать столбцы, которые вы вставляете.






Проблема в том, что вы отправляете пустую строку со значением «id»:
$stmt = $dbh->prepare("INSERT INTO myblob VALUES('',?,?,?)");
Правильным было бы сообщить столбцам со значениями, которые нужно добавить, ничего не отправляя для столбца «id», поскольку это автоматическое увеличение
$stmt = $dbh->prepare(INSERT INTO myBlob(name, type, data) VALUES(:name, :type, :data)
$stmt->bindParam('name',$name);
$stmt->bindParam('type',$type);
$stmt->bindParam('data',$data);
Большое спасибо, что отлично мне помогли! как-то я следил за учебником, и он использовал именно тот синтаксис, который был у меня, и это не вызвало у него никаких ошибок.
1) PHPMyAdmin — это способ доступа к базе данных, а не сама база данных. Вы используете MySQL. 2) Вы не можете вставить пустую строку в целочисленный столбец. Либо используйте
NULLдля столбцов с автоматическим увеличением, либо укажите столбцы, которые вы вставляете, и вообще не вставляйтеid.