


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

AI Hentai Generator
Generate AI Hentai for free.

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

The page is blank after PHP connects to MySQL, and the reason why die() function fails. When learning the connection between PHP and MySQL database, you often encounter some confusing things...

Causes and solutions for errors when using PECL to install extensions in Docker environment When using Docker environment, we often encounter some headaches...

Many website developers face the problem of integrating Node.js or Python services under the LAMP architecture: the existing LAMP (Linux Apache MySQL PHP) architecture website needs...

ThinkPHP6 routing parameters are processed in Chinese and complete acquisition. In the ThinkPHP6 framework, URL parameters containing special characters (such as Chinese and punctuation marks) are often processed...

Solution to permission issues when viewing Python version in Linux terminal When you try to view Python version in Linux terminal, enter python...

Using Django and MySQL to process large data volumes When using Django and MySQL databases, if your data volume reaches hundreds of thousands to one or two million...

How to avoid the third-party interface returning 403 error in the Node environment. When calling the third-party website interface using Node.js, you sometimes encounter the problem of returning 403 error. �...

When using Scapy crawler, the reason why pipeline persistent storage files cannot be written? Discussion When learning to use Scapy crawler for data crawler, you often encounter a...
