如何把二维码导入到mysql中?

Naturally
  • 36

**如何把二维码导入到mysql中?
然后怎么调用mysql的二维码数据?**
(纯前端小白第一次接触MYSQL,忘体谅。)


希望大家一起进步!

回复
阅读 9.9k
8 个回答

三个思路:

  • 二维码就是一段文本,只要存储这段文本就好了;

    比如这个二维码:
    

    图片描述

    
    其实就是`https://segmentfault.com/`。
    
  • 虽然二维码就是一段文本,但是很多二维码有很多花样。这些花样或者只有观赏效果(比如颜色和图标),没有实际意义;或者适用于纠错,没有内部意义。如果想保存,尽量只保存图片到本地,不要存到数据库;数据库中可以记录本地保存的这个图片的位置和名称

  • 如果非要带花样存到数据库,那就用二进制存储到数据库,但是建议不这么做,效率很低;或者先把图片使用BASE64编码,再存到数据库,虽然这个方法更容易理解接受,但更不建议这么做,不仅效率更差,而且占用空间会变成原来的三分之四。

总而言之,数据库的优势在于查询,而不是存储。

二维码其实也就是一串文本而已.
生成二维码,就是将文本生成相应的二维码.

你只需要将二维码对应的值存到 MySQL 就行

member
  • 6.1k

二维码就一段文本,数据库可以存文本

前台显示:

存储:

  • 如果你的来源就是一张二维码图片,那么,如果能识别二维码并得到文本(比如后台可以识别),那么存文本

  • 如果无法识别,服务器存图片即可,和数据库无关。

  • 另外不要将二进制存入MySQL,这种方式很低效。

SFPage
  • 139
  1. 如果二维码是标准完全可以识别的就将二维码识别成文本存入数据库,取出时候文本在生成二维码图片字节数组

  2. 如果二维码是非标准的可以将二维码图片编码成Base64文本存入数据库,取出时候Base64文本转换成二维码图片字节数组就可以了

核心是将图片二进制数据存入数据库blob类型的字段

CREATE TABLE `upload` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `type` varchar(20) NOT NULL,
  `data` mediumblob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

HTML

<!doctype html>
    <html>
<head>
    <title>
        Post-Image
    </title>
</head>
<body>
<form action="post.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file" id="file"/>
    <input type="submit" value="OK"/>
</form>
</body>
</html>

PHP

<?php
if ($_FILES["file"]["error"] > 0)
{
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
    $type = $_FILES["file"]["type"];
    $size = $_FILES['file']['size'];
    $tmp=$_FILES["file"]["tmp_name"];
    $fp = fopen($tmp,'rb');
    $data = bin2hex(fread($fp,$size));
    $dsn='mysql:host=localhost;dbname=test';
    echo '<pre>';
    try{
        $pdo = new PDO($dsn,'root','root');
        $pdo->exec("INSERT INTO `upload`(`type`,`data`) values ('$type',0x$data)");
        $id = $pdo->lastInsertId();
        echo 'upload success!<a href="view.php?id='.$id.'">View</a>';
        $pdo = null;
    }catch (PDOException $e){
        echo $e->getMessage();
    }
    echo '</pre>';
    fclose($fp);
}

输出二维码

<?php
$id = $_GET['id'];
if(is_numeric($id)){
    $dsn='mysql:host=localhost;dbname=test';
    try{
        $pdo = new PDO($dsn,'root','root');
        $rs = $pdo->query('select * from `upload`  where `id`='.$id);
        $row = $rs->fetchAll();
        $data = $row[0];
        header("Content-Type:${data['type']}");
        echo $data['data'];
        $pdo = null;
    }catch (PDOException $e){
        echo $e->getMessage();
    }
}else{
    exit();
}

数据库保存二维码的链接地址;

可以把二维码图片转换成base64或者其他二进制数据格式。不过更推荐的是把二维码中的数据读出来存进数据库,需要的时候再把数据取出来转换会二维码。

二维码视为图片,上传图片,存储链接,在进行数据存储时要尽量避免大字段例如,blog ,text等字段的出现

宣传栏