【问题标题】:barcode not read row in mysql条形码未读取mysql中的行
【发布时间】:2016-06-13 21:05:07
【问题描述】:

大家晚上好,我想为每种意大利面打印一个条形码。 我将此代码改编为我的,但它不会读取代码字段中的数据。 (由 php rand() 代码创建) 我会通过要打印的条形码选择id。

<html>
<head>
<?php
$con=mysqli_connect("localhost","xxx","xxx","xxx");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$id = $_GET['id'];
$query= "select * from pasta where id='$id'";
$result = mysqli_query($con,$query);
while ($row = mysqli_fetch_assoc($result)){
$rand=$row['codice'];
}
?>
<br>
<div style="width:25px: height:500px; border:2px, solid #000; align="center"">
<div align="center">
<img src="http://bcgen.com/demo/linear-dbgs.aspx?=D<?php echo $rand  ?>">
<br>
<form action ="stampa.php" method="post">
<input  type="button" value="stampa"
onClick="window.print()"/>
</form>
</body>
</html>

【问题讨论】:

  • 如果您希望$rand 有多个值,则将 HTML 放在 while 循环中,而不是放在它之后。如果只需要 1 个值,请将 while 更改为 if。
  • 我也想知道为什么你打开&lt;div&gt;s却从来没有关闭&lt;/div&gt;s。
  • $rand 是唯一的一行
  • a) 请使用准备好的语句 b) 启用 php 警告和错误 c) 您确定列名为 codice(区分大小写!)。 d) 你确定$_GET['id'] 设置了吗? d) 你确定你的查询返回了什么吗?回显您使用它们的所有值并检查它们的值。
  • 警告:当使用mysqli 时,您应该使用parameterized queries 和bind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST 或$_GET 数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。

标签: php mysql barcode


【解决方案1】:

在我看来,您有一个循环读取与选择匹配的所有行,并在循环中覆盖“codice”的所有值,但最后一个,然后创建一些 html 将(最终在浏览器中)生成您的条形码。

Solarflare 非常正确:检查您的输入是否与您认为的一样,以及查询结果是否也包含您期望的字段。始终明确提及字段名称被认为是一种好习惯——也就是说,不要使用 *——这样更容易发现不匹配的名称。

如果您只期望数据库中的一个值,那么您不需要 while 循环,也许 SQL 中的 LIMIT 1 也很好。如果没有,则需要将 html 嵌套在 php 循环中,这样会得到多个 img 标签输出。

... 并且肯定会修复 html。如果您缩进代码会有所帮助,因为这会立即显示出不匹配的地方。

[说到这里,更好的做法是在服务器端生成条形码,而不是让浏览器/客户端从第三方站点生成。]

【讨论】:

猜你喜欢
  • 2012-01-27
  • 2020-01-27
  • 2011-06-16
  • 1970-01-01
  • 2020-11-05
  • 2013-06-24
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多