Table of Contents
Solution to the failure of PHP to save images into mysql database,
Home Backend Development PHP Tutorial Solution to PHP failure to save images into mysql database, _PHP tutorial

Solution to PHP failure to save images into mysql database, _PHP tutorial

Jul 13, 2016 am 10:10 AM
mysql php picture Solution

Solution to the failure of PHP to save images into mysql database,

The example of this article analyzes the solution to the failure of PHP to save pictures into the MySQL database. Share it with everyone for your reference. The specific analysis is as follows:

It is not a wise idea to save pictures in the database. Most of us save the pictures to the server, and then save the picture address to the database. In this way, we only need to read the picture address every time to display it, but I will introduce it below. The solution to the problem of saving a picture to mysql database, the code is as follows:

Copy code The code is as follows:
require 'class/db.php';
$fileName = "a1.jpg";
$fp = fopen($fileName, "r");
$img = fread($fp, filesize($fileName));
fclose($fp);

$db->execute("insert db2.testimg (`img`) values ​​('$img') ;");

Error report:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`?绶q?仳!??? ?1丶> ,Mo?'^ W Z4in??T春??????U? 湹?' at line 1

The code is as follows:

Copy code The code is as follows:
$img = fread($fp, filesize($fileName));
$img = addslashes($img)

Continuing to report errors, various searches, the results in Baidu are all addslashes, or there are no addslashes at all, it is really nonsense.

Copy code The code is as follows:
base64_decode
$img = base64_encode($img);

The insertion is successful, the image file is 17.0k, come out and perform base64_decode, the display is normal, I found a hexadecimal method:

Copy code The code is as follows:
$img = bin2hex($img);

It works, the output does not need to be decrypted, and the database is 25K large, which is even more embarrassing than base64. I searched again, and later, I found that the image file uploaded directly by phpmyadmin can be used. The file is smaller than base64, the file is 12.8k.

Looking through the phpmyadmin source code, common.lib.php file 183 has a magical function, the code is as follows:

Copy code The code is as follows:
function PMA_sqlAddslashes($a_string = '', $is_like = false, $crlf = false, $php_code = false)
{
If ($is_like) {
          $a_string = str_replace('', '\\', $a_string);
} else {
          $a_string = str_replace('', '\', $a_string);
}

If ($crlf) {
         $a_string = str_replace("n", 'n', $a_string);
         $a_string = str_replace("r", 'r', $a_string);
          $a_string = str_replace("t", 't', $a_string);
}

If ($php_code) {
          $a_string = str_replace(''', ''', $a_string);
} else {
          $a_string = str_replace(''', '''', $a_string);
}

Return $a_string;
} // end of the 'PMA_sqlAddslashes()' function$img = PMA_sqlAddslashes($img);

The file size is 12.8K, which is the same size as phpmyadmin.

For example, frontend image.html, the code is as follows:

Copy code The code is as follows:


Upload picture





File:




The background processing upimage.php code is as follows:
Copy code The code is as follows:
//Insert pictures into the database
$imgfile=$_FILES['imgfile'];
$submitbtn=$_POST['submitbtn'];
if($submitbtn=='OK' and is_array($imgfile)){
$name=$imgfile['name']; //Get the image name
$type=$imgfile['type']; //Get the image type
$size=$imgfile['size']; //Get the image length
$tmpfile=$imgfile['tmp_name']; //The path to the temporary file where the image is uploaded
if($tmpfile and is_uploaded_file($tmpfile)){ //Determine whether the uploaded file is empty and whether the file is an uploaded file
//Read image stream
$file=fopen($tmpfile,"rb");
$imgdata=bin2hex(fread($file,$size)); //bin2hex() converts binary data into hexadecimal representation
fclose($file);

$mysqli=mysql_connect("localhost","root","123456″); //Connect database function
mysql_select_db("test"); //Select database
//Insert the database statement, add 0x before the image data, used to represent hexadecimal numbers
if(mysql_query("insert into images(name,type,image) values('".$name."','".$type."',0x".$imgdata.")"))
echo "
Inserted successfully!

Display image
";
else
echo "
Insertion failed!
";
mysql_close();
}else
echo "
Please select an image first!

Click here to return
";
} else
echo "
Please select an image first!

Click here to return
";
?>

Display the image disimage.php, the code is as follows:
Copy code The code is as follows:
mysql_connect("localhost","root","123456″);
mysql_select_db("test");
//Show the latest inserted picture
$result=mysql_query("select image from images where id=(select max(id) from images)");
$row=mysql_fetch_object($result);
header("Content-Type:image/pjpeg");
echo $row->image;
mysql_close();
?>

Conclusion:

PMA_sqlAddslashes is easy to use. The file size is 12.8k and the same size as the original image

bin2hex hexadecimal useful file 25K

base64_encode is easy to use, the output file requires base64_decode 17K

addslashes is not easy to use, continue to report the error and indicate that addslashes is easy to use on some Windows machines.

I hope this article will be helpful to everyone’s PHP programming design.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/933596.htmlTechArticleSolution to the failure of php to save pictures into mysql database. This article analyzes the failure of php to save pictures into mysql database. solution. Share it with everyone for your reference. Specific points...
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1664
14
PHP Tutorial
1268
29
C# Tutorial
1240
24
Explain the purpose of foreign keys in MySQL. Explain the purpose of foreign keys in MySQL. Apr 25, 2025 am 12:17 AM

In MySQL, the function of foreign keys is to establish the relationship between tables and ensure the consistency and integrity of the data. Foreign keys maintain the effectiveness of data through reference integrity checks and cascading operations. Pay attention to performance optimization and avoid common errors when using them.

Compare and contrast MySQL and MariaDB. Compare and contrast MySQL and MariaDB. Apr 26, 2025 am 12:08 AM

The main difference between MySQL and MariaDB is performance, functionality and license: 1. MySQL is developed by Oracle, and MariaDB is its fork. 2. MariaDB may perform better in high load environments. 3.MariaDB provides more storage engines and functions. 4.MySQL adopts a dual license, and MariaDB is completely open source. The existing infrastructure, performance requirements, functional requirements and license costs should be taken into account when choosing.

SQL vs. MySQL: Clarifying the Relationship Between the Two SQL vs. MySQL: Clarifying the Relationship Between the Two Apr 24, 2025 am 12:02 AM

SQL is a standard language for managing relational databases, while MySQL is a database management system that uses SQL. SQL defines ways to interact with a database, including CRUD operations, while MySQL implements the SQL standard and provides additional features such as stored procedures and triggers.

What happens if session_start() is called multiple times? What happens if session_start() is called multiple times? Apr 25, 2025 am 12:06 AM

Multiple calls to session_start() will result in warning messages and possible data overwrites. 1) PHP will issue a warning, prompting that the session has been started. 2) It may cause unexpected overwriting of session data. 3) Use session_status() to check the session status to avoid repeated calls.

MySQL: The Database, phpMyAdmin: The Management Interface MySQL: The Database, phpMyAdmin: The Management Interface Apr 29, 2025 am 12:44 AM

MySQL and phpMyAdmin can be effectively managed through the following steps: 1. Create and delete database: Just click in phpMyAdmin to complete. 2. Manage tables: You can create tables, modify structures, and add indexes. 3. Data operation: Supports inserting, updating, deleting data and executing SQL queries. 4. Import and export data: Supports SQL, CSV, XML and other formats. 5. Optimization and monitoring: Use the OPTIMIZETABLE command to optimize tables and use query analyzers and monitoring tools to solve performance problems.

Composer: Aiding PHP Development Through AI Composer: Aiding PHP Development Through AI Apr 29, 2025 am 12:27 AM

AI can help optimize the use of Composer. Specific methods include: 1. Dependency management optimization: AI analyzes dependencies, recommends the best version combination, and reduces conflicts. 2. Automated code generation: AI generates composer.json files that conform to best practices. 3. Improve code quality: AI detects potential problems, provides optimization suggestions, and improves code quality. These methods are implemented through machine learning and natural language processing technologies to help developers improve efficiency and code quality.

How to uninstall MySQL and clean residual files How to uninstall MySQL and clean residual files Apr 29, 2025 pm 04:03 PM

To safely and thoroughly uninstall MySQL and clean all residual files, follow the following steps: 1. Stop MySQL service; 2. Uninstall MySQL packages; 3. Clean configuration files and data directories; 4. Verify that the uninstallation is thorough.

An efficient way to batch insert data in MySQL An efficient way to batch insert data in MySQL Apr 29, 2025 pm 04:18 PM

Efficient methods for batch inserting data in MySQL include: 1. Using INSERTINTO...VALUES syntax, 2. Using LOADDATAINFILE command, 3. Using transaction processing, 4. Adjust batch size, 5. Disable indexing, 6. Using INSERTIGNORE or INSERT...ONDUPLICATEKEYUPDATE, these methods can significantly improve database operation efficiency.

See all articles