如何使用php从mysql数据库中的一列生成最高数字

时间:2013-11-15 11:15:14

标签: php html mysql

我希望你能帮助我。我的数据库中有一个名为lno的列,它是许可证号的快捷方式。每次将新许可证添加到我的数据库时,该数字基本上会增加1。为了让自己的生活更轻松我试图创建一个按钮,生成下一个可用的许可证号码,当然这将是现有的最高版本+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中给出

任何人都可以就我做错了什么给我建议吗?我还是那么新鲜。感谢

3 个答案:

答案 0 :(得分: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会出现什么问题?

答案 1 :(得分:1)

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

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

答案 2 :(得分: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";

}

谢谢大家