UPDATED:
As suggested in comment section I have updated my code and using PDO now. I still have the same error.
I am trying to store multiple images to the database (phpmyadmin). When I try to upload it gives an error Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'file.png' in 'field list'
My database:
I have an database named image_upload and inside it has a table named car_detailss which has an id (int11), car_name(varchar 255) and imageOfcar(longblob).
That’s my image details:
Array ( [0] => Array ( [name] => file.png [type] => image/png [tmp_name] => /opt/lampp/temp/phpJYyrQn [error] => 0 [size] => 77776 ) [1] => Array ( [name] => files.png [type] => image/png [tmp_name] => /opt/lampp/temp/phpXOLvzL [error] => 0 [size] => 84710 ) )
As suggested in comment section I am using PDO now That’s my code: (UPDATED)
<!doctype html> <html> <head> <title>Test</title> </head> <body> <form method="post" enctype="multipart/form-data"> <input type="file" name="userfile[]" multiple="" /> <input type="submit" name="submit" value="upload" /> </form> <?php $servername="localhost"; $username="root"; $password = ""; $dbname="image_upload"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname",$username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // begin the transaction $conn->beginTransaction(); $phpFileUploadErrors = array( 0 => "There is no error, the file uploaded with success", 1 => "The uploaded file exceeds the upload_max_filesize directive in php.ini", 2 => "The upload file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form", 3 => "The upload file was only partially uploaded", 4 => "No file was uploaded", 6 => "Missing a temporary folder", 7 => "Failed to write file to disk.", 8 => "A php extension stopped the file upload" ); if(isset($_FILES['userfile'])) { $file_array = reArrayFiles($_FILES['userfile']); pre_r($file_array); for($i=0;$i<count($file_array);$i++) { $carname = $file_array[$i]["tmp_name"]; $tablename = "car_detailss"; $imagename = $file_array[$i]["name"]; pre_r($carname); pre_r($imagename); $conn->exec("INSERT INTO `car_detailss`(`car_name`, `imageOfcar`) VALUES ( $carname,$imagename)"); } } $conn->commit(); echo "new records created succesfully"; } catch(PDOException $e) { // roll back the transaction if something failed $conn->rollback(); echo "Error: " . $e->getMessage(); } $conn = null; function reArrayFiles($file_post) { $file_ary = array(); $file_count = count($file_post['name']); $file_keys = array_keys($file_post); for ($i = 0; $i < $file_count; $i++){ foreach($file_keys as $key) { $file_ary[$i][$key] = $file_post[$key][$i]; } } return $file_ary; } function pre_r($array) { echo '<pre>'; print_r($array); echo '</pre>'; } ?> </body> </html>
How can I fix the error it displays (at the top) I mentioned?
Advertisement
Answer
As suggested in the comment section. I first changed my code to PDO and instead of inserting into database without any backticks or “”, I followed the suggestion in comment section and added backticks and “” while inserting the images into database.
$conn->exec( "INSERT INTO
car_detailss (
car_name,
imageOfcar) VALUES ('$carname', '$imagename')");
Now I am able to insert the images to my database. I have updated my code here as well.
My code:
<!doctype html> <html> <head> <title>Test</title> </head> <body> <form method="post" enctype="multipart/form-data"> <input type="file" name="userfile[]" multiple="" /> <input type="submit" name="submit" value="upload" /> </form> <?php $servername="localhost"; $username="root"; $password = ""; $dbname="image_upload"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname",$username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // begin the transaction $conn->beginTransaction(); $phpFileUploadErrors = array( 0 => "There is no error, the file uploaded with success", 1 => "The uploaded file exceeds the upload_max_filesize directive in php.ini", 2 => "The upload file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form", 3 => "The upload file was only partially uploaded", 4 => "No file was uploaded", 6 => "Missing a temporary folder", 7 => "Failed to write file to disk.", 8 => "A php extension stopped the file upload" ); if(isset($_FILES['userfile'])) { $file_array = reArrayFiles($_FILES['userfile']); pre_r($file_array); for($i=0;$i<count($file_array);$i++) { $carname = $file_array[$i]["size"]; $tablename = "car_detailss"; $imagename = $file_array[$i]["name"]; $conn->exec( "INSERT INTO `car_detailss` (`car_name`, `imageOfcar`) VALUES ('$carname', '$imagename')"); } } $conn->commit(); echo "new records created succesfully"; } catch(PDOException $e) { // roll back the transaction if something failed $conn->rollback(); echo "Error: " . $e->getMessage(); } $conn = null; function reArrayFiles($file_post) { $file_ary = array(); $file_count = count($file_post['name']); $file_keys = array_keys($file_post); for ($i = 0; $i < $file_count; $i++){ foreach($file_keys as $key) { $file_ary[$i][$key] = $file_post[$key][$i]; } } return $file_ary; } function pre_r($array) { echo '<pre>'; print_r($array); echo '</pre>'; } ?> </body> </html>