我正在尝试在我的工作场所建立一个图书馆。我已经设置了 MySQL 数据库,其中包含数据和所有内容。现在我想做的是让某人能够拿起他们的手机,扫描某本书的二维码,然后它会检查这本书。我在数据库中有一个字段说明这本书是否已签出,另一个说明签出日期。我将如何通过互联网和二维码从外部访问我的数据库,并让二维码在我的数据库的特定字段中更改数据,谢谢。我使用 phpMyAdmin 设置数据库,我的虚拟主机是 iPage.com。
2 回答
正如我已经在评论中指出的那样,您的问题与Tranfer QR Code Into a MySql Database问题很相似。但是在您的问题中还有更多不清楚的地方:到目前为止,我做了一些研究,一些来自 iPage.com 支持的人告诉我,您的 webhoster在所有软件包中都支持 php 。
所以我会给你一些提示,你可以如何用 php 实现它:
对于数据库访问,请使用准备好的语句和PDO。这是一个关于 PDO的好教程。
对于某种REST API的干净和简单的 url,请使用带有 .htaccess的mod_rewrite :
基本上你必须检查是否启用了 mod rewrite。在您的情况下,您可以跳过此步骤,但通常您必须检查您的目录指令中是否有AllowOverride All
声明。
只需将此代码放入您的 .htaccess 文件中:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^/?searchbook/(.*)$ yourphpfile.php?qr=$1
</IfModule>
yourphpfile.php
所以你可以通过这个简单的变量访问来访问二维码:
$_GET['qr']
对于扫描部分,您可以使用ZXing Barcode Scanner 应用程序:
如果用户安装了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 文档的完整说明。
一般来说,这当然是可能的。实际上每个二维码/条码都存储信息。但通常该信息的大小非常小。通常只存储 URL 或数字 (ID) 之类的引用,并使用这些引用从数据库中检索“真实”数据。但严格来说,这是一种将信息存储在 QRCode/条形码中的形式。
仔细观察,我们会发现数据存储在代码本身中,而不是存储在数据库中(如果我们谈论的是少量数据)。当然,读取代码时可以将数据存储在数据库中,您所需要的只是一个微不足道的软件。但这在大多数情况下没有什么意义,因为数据已经存储了。如果您想使用数据库来组合来自不同来源的数据,那么如果您只想使用代码作为一种传输方式,那么读取代码只是用键盘输入信息的替代品。所以这里没有魔法,你不需要考虑任何特定的代码。
这是直接在db中生成QR的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;
}
?>