


Solution to PHP failure to save images into mysql database, _PHP tutorial
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:
$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:
$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.
$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:
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:
{
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:
The background processing upimage.php code is as follows:
$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 "
Display image
else
echo "
mysql_close();
}else
echo "
Click here to return
} else
echo "
Click here to return
?>
Display the image disimage.php, the code is as follows:
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.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











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.

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 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.

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 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.

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.

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.

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.
