0

我希望你能帮我解决这个问题。我的数据库中有一个名为 lno 的列,它是许可证号的快捷方式。每次将新许可证添加到我的数据库时,该数字基本上都会增加一。为了让我自己的生活更轻松,我尝试创建一个按钮,该按钮将生成下一个可用的许可证号,当然这将是现有的最高 +1。这是我的php代码:

  if($nextlic){
global $lno,$rec;


    $query= mysql_query ( "SELECT MAX(lno)+1 FROM mlicense_table  ");
    $rec = mysql_fetch_array($query);
    $lno = $rec['lno'];//serial number
    mysql_free_result($query);
    $message="Successful";

}

和我的按钮的简单 html:

   <td align="center"><input type="submit" name="nextlic" value="Next available      
    license" /></td>

这两个不断出现,并且没有生成数字

警告:mysql_fetch_array() 期望参数 1 是资源,在第 431 行的 C:\xampp\htdocs\license_db\miramo2.php 中给出的布尔值

警告:mysql_free_result() 期望参数 1 是资源,在第 433 行的 C:\xampp\htdocs\license_db\miramo2.php 中给出的布尔值

谁能给我建议我做错了什么?我对它还是很陌生。谢谢

4

3 回答 3

2

第一个错误是由您的查询中的错误引起的。也许是一个不存在的列或表。用于var_dump(mysql_error())了解那里发生了什么。

但是,一旦您开始工作,您将遇到其他问题。您的数组将如下所示:

array(1) {
    ["MAX(lno)+1"] => 12345
}

这意味着您必须参考$lno = $rec['MAX(lno)+1'];.

这是一个令人头疼的问题,所以让它变得更容易:

$rec = mysql_fetch_row($query);
$lno = $rec[0];

编辑:

每次将新许可证添加到我的数据库时,该数字基本上都会增加一

那么设置lno为有什么问题AUTO_INCREMENT呢?

于 2013-11-15T11:18:41.330 回答
1

您也可以使用 $query= mysql_query ("SELECT MAX(lno)+1 as lno FROM mlicenses_table ");

代替 $query= mysql_query ("SELECT MAX(lno)+1 FROM mlicenses_table ");

于 2013-11-15T11:46:27.003 回答
0

所以这是一件现在可以使用的漂亮作品

 if($nextlic){
global $lno,$rec;


    $query= mysql_query ( "SELECT MAX(lno)+1 FROM mlicenses_table  ");
    var_dump(mysql_error());
    $rec = mysql_fetch_row($query);
    $lno = $rec[0];
    mysql_free_result($query);
    $message="Successful";

}

感谢大家

于 2013-11-15T11:30:39.203 回答