PHP子字符串函数,用于数据类型查询


php substr function for data varchar

我有问题,我想输入数据发票号,当我尝试在phpmyadmin版本5.6.16在我的计算机的工作,但我上传到cpanel phpmyadmin v 5.5它不工作。

V 5.6.16:

- INV0001
- INV0002
- INV0003

结果在Cpanel/Hosting。V 5.5:

- INV0001
- INV0001
- INV0001

是重复的,如何修复?谢谢。

<?php
  $query = "SELECT max(invoice) AS invoice FROM orders";
  $hasil = mysql_query($query);
  $data  = @mysql_fetch_array($hasil);
  $lastinv = $data['invoice'];
  $nextInv= (int) substr($lastinv, 3, 4);
  $nextInv++;
  $char = "INV";
  $newInvoice = $char .  sprintf("%04s", $nextInv);
?>

您可以尝试下面的代码来避免重复记录:

$query = "SELECT max(invoice) AS invoice FROM orders";
$hasil = mysql_query($query);
$data  = @mysql_fetch_array($hasil);
$lastinv = $data['invoice'];
$nextInv= (int) substr($lastinv, 3, 4);
$nextInv++;
$char = "INV";
$i = 1;
while(true) // eliminating duplicacy
{
    $newInvoice = $char .  sprintf("%04s", $nextInv);
    $query = "SELECT * FROM orders where invoice = ".$newInvoice;
    $hasil = mysql_query($query);
    $data  = @mysql_fetch_array($hasil);
    if(empty($data))
        break;
    $i++;
}

你可以尝试@codeSun注释如下:

<?php
  $query = "SELECT invoice FROM orders order by invoice desc limit 1";
  $hasil = mysql_query($query);
  $data  = @mysql_fetch_array($hasil);
  $lastinv = $data['invoice'];
  $nextInv= (int) substr($lastinv, 3, 4);
  $nextInv++;
  $char = "INV";
  $newInvoice = $char .  sprintf("%04s", $nextInv);
?>