我需要将会话递增的值插入到数据库中,这里我可以增加像0001,0002这样的值等等,但问题是我无法将这些递增的值插入到数据库表中。
任何人都可以帮我解决这个问题吗?
这是我的代码:
<?php
$username="root";
$password="sha12345";
$hostname="localhost";
$dbhandle = mysql_connect($hostname,$username,$password) or die("Could not connect to database");
$select = mysql_select_db("sha", $dbhandle);
session_start();
if(!isset($_SESSION['rid']))$_SESSION['rid']=0;
if(!empty($_POST['register']))
{
$_SESSION['rid'] = $_SESSION['rid']+ 1;
$input = $_SESSION['rid'];
str_pad($_SESSION['rid'], 4, "0", STR_PAD_LEFT);
$calender=$_POST['datum1'];
$time=$_POST['timepicker_6'];
mysql_query("INSERT INTO receipt(Bill_number,Date,Time) VALUES ('{$_SESSION['rid']}','$calender','$time')");
require("fpdf/fpdf.php");
$pdf=new FPDF();
$pdf->Addpage();
$pdf->SetFont("Arial","B",18);
$pdf->Cell(0,10,"Receipt number:". str_pad($_SESSION['rid'], 4, "0", STR_PAD_LEFT),0,0,'C');
$pdf->SetFont("Arial","B",18);
$pdf->cell(0,10,"Date:{$calender} ",0,1,'R');
$pdf->cell(0,10,"Time:{$time}",0,1,'R');
$pdf->output();
}
?
非常感谢大家,现在我可以在使用varchar for Bill_number之后将会话增量值正确地插入到数据库表中。
但现在问题是我无法以0001,0002的格式将会话递增的值插入数据库等等。
非常感谢再次帮助我。
答案 0 :(得分:0)
你已经在$_SESSION['rid'] = $_SESSION['rid']+ 1;
这一行中获取了会话值,但是只有在页面刷新后才会获得新的会话值,所以它不会在这里发生,所以最后你传递{{1}中可用的旧值变量到查询。请看下面给出的解决方案。
$_SESSION['rid']
在查询中将 $IncrementValue = $_SESSION['rid']+ 1;
替换为{$_SESSION['rid']}
。现在您的查询将如下所示:
$IncrementValue
您还需要更改下面的行
mysql_query("INSERT INTO
receipt(Bill_number,Date,Time)
VALUES ($IncrementValue,$calender,$time)
");
希望这会对你有所帮助。
答案 1 :(得分:0)
请检查:
varchar
类型session_start();
,否则您的会话变量将被视为本地变量mysql_query
&amp;之前准备查询然后打印出来。此外,您可以在代码中将$_SESSION['rid'] = $_SESSION['rid']+ 1;
替换为$_SESSION['rid']++;
。