You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP将数据库idNum字段内容写入生成的QR二维码?

问题修复方案

核心错误原因

  • 你编写的尝试代码存在多处逻辑错误,导致二维码内容无效:
    1. $id=isset($_POST['idNum'])写法错误:isset()函数仅返回布尔值(存在返回true/1,不存在返回false/空),并不会返回$_POST['idNum']的实际值,因此二维码生成的内容本身就是错误值,扫描后自然无有效内容
    2. 执行数据库查询后未从结果集中提取idNum字段值,直接将错误的布尔类型$id作为二维码内容,完全没有用到数据库存储的字段值
    3. 直接将参数拼接进SQL语句存在SQL注入风险,需要用预处理语句优化
    4. 原有phpqrcode示例代码存在变量名大小写不一致问题:$frame_size定义时为小写s,调用时写的$frame_Size为大写S,PHP对变量名大小写敏感,会导致生成时报错

正确实现代码(基于phpqrcode库版本,替换原示例中的固定文本)

// 数据库连接
$connection = mysqli_connect("localhost", "root", "", "db_bakascts") or die(mysqli_connect_error()); 

// 正确接收POST参数,先判断存在再取值,同时做空值校验
$id = isset($_POST['idNum']) ? trim($_POST['idNum']) : '';
if(empty($id)) {
    die("参数idNum不能为空");
}

// 用预处理语句查询数据库,避免SQL注入
$stmt = mysqli_prepare($connection, "SELECT idNum FROM tb_usersreg WHERE idNum = ? LIMIT 1");
mysqli_stmt_bind_param($stmt, "s", $id);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_assoc($result);
if(empty($row)) {
    die("未查询到对应用户数据");
}

// 取数据库中的idNum字段值作为二维码内容
$text = $row['idNum'];

// 以下是修正后的phpqrcode生成逻辑
include('phpqrcode/qrlib.php');
$path = 'qrcodes/';
// 自动创建存储目录,避免目录不存在报错
if(!is_dir($path)) {
    mkdir($path, 0777, true);
}
$file = $path.uniqid().".png";

$ecc = 'L'; // 纠错级别
$pixel_Size = 170;
$frame_size = 10;

QRcode::png($text, $file, $ecc, $pixel_Size, $frame_size);

// 可根据业务需求调整输出逻辑
echo "二维码生成成功,文件路径:".$file;

如果你要使用在线接口生成二维码,修复后的代码如下

// 数据库连接
$connection = mysqli_connect("localhost", "root", "", "db_bakascts") or die(mysqli_connect_error()); 

// 正确接收POST参数
$id = isset($_POST['idNum']) ? trim($_POST['idNum']) : '';
if(empty($id)) {
    die("参数idNum不能为空");
}

// 预处理查询
$stmt = mysqli_prepare($connection, "SELECT idNum FROM tb_usersreg WHERE idNum = ? LIMIT 1");
mysqli_stmt_bind_param($stmt, "s", $id);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_assoc($result);
if(empty($row)) {
    die("未查询到对应用户数据");
}

$qr_text = urlencode($row['idNum']); // 内容需要URL编码避免特殊字符报错
$width = "250";
$height = "250";

$url = "https://chart.googleapis.com/chart?cht=qr&chs={$width}x{$height}&chl={$qr_text}";
$qr["img"] = $url;

内容的提问来源于stack exchange,提问作者mariakz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:36:03