php - QR 码仅在第一行生成(可能是 PHP 中的迭代问题)
问题描述
我有以下代码从 MySQL 获取数据,根据“URL”列中的链接生成 QR 码并显示它。一切正常,唯一我无法解决的问题是,所有 QR 码(在本例中为 10 个)都显示在第一行,其余行没有 QR 码。
<script src="qrcode.min.js"></script>
<?php
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "SELECT objectid,code,url FROM stations LIMIT 10";
$result = mysqli_query($conn, $sql);
?>
<table>
<thead><tr><th> OBJECTID </th><th> CODE </th><th> URL </th><th> QR </th></tr></thead>
<?php
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<script>new QRCode(document.getElementById('qrcode'), '". $row[url] ."');</script>";
echo "<tr><td>" . $row[objectid] . "</td><td>". $row[code] ."</td><td>" . $row[url] . "</td><td><div id='qrcode'></div></td></tr>";
}
}
?>
</table>
用来生成二维码的库是这个
解决方案
(这是评论,但评论部分的空间和格式有限)
用来生成二维码的库是这个
但是,在您向我们展示的代码中,没有任何地方是名为 ( echo '<img src="'.(new QRCode)->render($data).'" alt="QR Code" />';
) 的库,您也没有说明如何包含代码。
由于应该包含 QR 图像的列只有....
<td><div id='qrcode'></div></td>
我认为这是由页面中包含的 Javascript 处理的。但是你没有告诉我们那是什么/它做了什么。
我在这里看到的是,您将拥有多个具有相同 ID 的元素——这有点傻——ID 应该是唯一的。您还需要在 div 本身之外查找要在 div 中呈现的数据。更好的方法是......
<td><div class='qrcode' data='$row[url]'></div></td>
然后,您只需要遍历具有类 'qrcode' 的元素并检索数据属性以调用 javascript 并注入图像。
您还没有查看您的代码生成的许多警告。请注意,在上面我在字符串中嵌入了 $row[] 值,而您正在拼接字符串:<td>" . $row[url] . "</td
。在您使用的上下文中,您应该这样引用 addray 索引:<td>" . $row['url'] . "</td
. 在暂停、记录问题然后恢复执行之后,PHP 会将其视为已引用 - 但是以这种方式编写代码是非常糟糕的做法,而且不检查日志非常非常糟糕。
推荐阅读
- android - Google Play:从 EMM 控制台发布私有应用程序会出现“上传具有不同包名称的新 apk 文件”错误
- c# - 回文递归:简化条件三元表达式
- java - Google 地方信息自动填充功能不一致
- jquery - 为什么我在使用 keyup 事件时没有被定义?
- node.js - 不推荐使用的警告:深需要像 const uuidv5 = require('uuid/v5'); 自节点 js 中的 uuid@7.x 起已弃用
- ruby-on-rails - Rails 6 前端架构
- python - 致命的 Python 错误:initfsencoding:无法加载文件系统编解码器 - ModuleNotFoundError:没有名为“encodings”的模块
- html - nodejs发送文件html页面
- scala - 避免重新编译 Scalas 脚本
- javascript - 异步函数返回一个promise。如何使promise 值全局化?