【问题标题】:Connect MySQL db to QR codes将 MySQL db 连接到 QR 码
【发布时间】:2013-05-01 08:27:14
【问题描述】:

我正在尝试在我的工作场所建立一个图书馆。我已经设置了 MySQL 数据库,其中包含数据和所有内容。现在我想做的是让某人能够拿起他们的手机,扫描某本书的二维码,然后它会检查这本书。我在数据库中有一个字段说明这本书是否已签出,另一个说明签出日期。我如何通过互联网和二维码从外部访问我的数据库,并让二维码在我的数据库的特定字段中更改数据,谢谢。我用phpMyAdmin设置数据库,我的webhost是iPage.com。

【问题讨论】:

  • 到目前为止你尝试过什么?您可以创建一个结帐页面,用户可以在其中扫描代表书籍唯一 ID 的 QR 码。然后,您可以使用该信息结帐。
  • 这个问题似乎很安静,类似于这里的这个问题:stackoverflow.com/q/16364703/995926

标签: mysql database phpmyadmin external qr-code


【解决方案1】:

正如我已经在评论中指出的那样,您的问题与Tranfer QR Code Into a MySql Database 的问题很相似。但是在你的问题中还有更多不清楚的地方:到目前为止,我做了一些研究,一些来自 iPage.com 支持的人告诉我,你的 webhoster 在所有包中都支持 php。

所以我会给你一些提示,你可以如何用 php 实现它:

对于数据库访问,请使用 prepared statementsPDO。这是一个关于 PDO 的good tutorial

对于某种REST API 的干净和简单的网址,请使用带有.htaccess 的mod_rewrite

基本上你必须检查是否启用了 mod rewrite。在您的情况下,您可以跳过此步骤,但通常您必须检查您的 directory directive 中是否有 AllowOverride All 声明。

只需将此代码放入您的 .htaccess 文件中即可:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /
  RewriteRule ^/?searchbook/(.*)$ yourphpfile.php?qr=$1
</IfModule>

所以你可以通过这个简单的变量访问来访问yourphpfile.php中的二维码:

$_GET['qr']

扫描部分可以使用ZXing Barcode Scanner app:

如果用户安装了ZXing,浏览器会自动打开应用。如果不是,用户将获得一个简单的网站,该网站会提示他或她如何安装应用程序。
您只需链接到页面,二维码的结果值将提交到 url http://example.com/seachbook/QR-code-content

http://zxing.appspot.com/scan?ret=http%3A%2F%2Fexample.com%2Fsearchbook%2F%7BCODE%7D%2Fdescription&SCAN_FORMATS=QR_CODE

另请参阅ZXing documentation 上的完整说明。

【讨论】:

    【解决方案2】:

    一般来说这当然是可能的。实际上每个二维码/条码都存储信息。但通常该信息的大小非常小。通常只存储 URL 或数字 (ID) 之类的引用,并使用这些引用从数据库中检索“真实”数据。但严格来说,这是一种将信息存储在二维码/条形码中的形式。

    仔细观察,我们发现数据存储在代码本身中,而不是存储在数据库中(如果我们谈论的是少量数据)。当然,读取代码时可以将数据存储在数据库中,您所需要的只是一个微不足道的软件。但这在大多数情况下没有什么意义,因为数据已经存储了。如果您想使用数据库来组合来自不同来源的数据,那么如果您只想使用代码作为一种传输方式,那么读取代码只是用键盘输入信息的替代品。所以这里没有什么魔法,你不需要考虑任何特定的代码。

    这里是直接在db中生成二维码的php脚本

    <?php
    class QRGenerator { 
    
        protected $size; 
        protected $data; 
        protected $encoding; 
        protected $errorCorrectionLevel; 
        protected $marginInRows; 
        protected $debug; 
    
        public function __construct($data='http://www.tutorial.makersofandroid.com',$size='300',$encoding='UTF-8',$errorCorrectionLevel='L',$marginInRows=4,$debug=false) { 
    
            $this->data=urlencode($data); 
            $this->size=($size>100 && $size<800)? $size : 300; 
            $this->encoding=($encoding == 'Shift_JIS' || $encoding == 'ISO-8859-1' || $encoding == 'UTF-8') ? $encoding : 'UTF-8'; 
            $this->errorCorrectionLevel=($errorCorrectionLevel == 'L' || $errorCorrectionLevel == 'M' || $errorCorrectionLevel == 'Q' || $errorCorrectionLevel == 'H') ?  $errorCorrectionLevel : 'L';
            $this->marginInRows=($marginInRows>0 && $marginInRows<10) ? $marginInRows:4; 
            $this->debug = ($debug==true)? true:false;     
        }
    public function generate(){ 
    
            $QRLink = "https://chart.googleapis.com/chart?cht=qr&chs=".$this->size."x".$this->size.                            "&chl=" . $this->data .  
                       "&choe=" . $this->encoding . 
                       "&chld=" . $this->errorCorrectionLevel . "|" . $this->marginInRows; 
            if ($this->debug) echo   $QRLink;          
            return $QRLink; 
        }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      相关资源
      最近更新 更多