如何使用GN mysql和php将唯一id发送到数据库
我创建了一个申请表,它没有申请字段。但它应该隐藏起来。此应用程序编号应为自动递增唯一编号。我使用date()和mysql\u insert\u id()方法来生成它。但在我的表中始终显示0值。我已经发布了我的代码。请任何人都给我解释一下这个案子的错误是什么。此代码已成功插入。但没有显示正确的输出。始终显示0如何使用GN mysql和php将唯一id发送到数据库,php,mysql,Php,Mysql,我创建了一个申请表,它没有申请字段。但它应该隐藏起来。此应用程序编号应为自动递增唯一编号。我使用date()和mysql\u insert\u id()方法来生成它。但在我的表中始终显示0值。我已经发布了我的代码。请任何人都给我解释一下这个案子的错误是什么。此代码已成功插入。但没有显示正确的输出。始终显示0 if(isset($_POST['submitted'])){ // catch data $loantype = $_POST['loantype']; $ca
if(isset($_POST['submitted'])){
// catch data
$loantype = $_POST['loantype'];
$calcno = $_POST['calcno'];
$memberid = $_POST['memberid'];
$appno = date('Y-m-d')."-LN/SS-".mysql_insert_id();
$amount = $_POST['amount'];
$rental_type = $_POST['rental_type'];
$apr = $_POST['apr'];
$npy = $_POST['npy'];
$flatrate = $_POST['flatRate'];
$othercharges = $_POST['othercharges'];
$repayment = $_POST['Repayment'];
$payment = $_POST['payment'];
$totpaid = $_POST['totpaid'];
$intpaid = $_POST['intpaid'];
date_default_timezone_set("Asia/Calcutta");
$created = date('Y-m-d h:i:s');
$status = "PENDING";
$discription = "NOT DEFINED";
$accepted_amount = "NOT DEFINED";
//create new loan application
$sql ='INSERT INTO tbl_loan_application VALUES (NULL,"'.$loantype.'","'.$calcno.'","'.$memberid.'","'.$appno.'","'.$amount.'","'.$rental_type.'","'.$apr.'","'.$npy.'","'.$flatrate.'","'.$othercharges.'","'.$repayment.'",
"'.$created.'","'.$status.'","'.$discription.'","'.$accepted_amount.'","'.$payment.'","'.$totpaid.'","'.$intpaid.'")';
/*else{
}*/
mysql_query($sql, $conn) or die(mysql_error());
echo'<div class="alert alert-dsgn alert-success fade in" style="width:400px; align:center; margin-left:35%; margin-top:5px;>
<button class="close" aria-hidden="true" data-dismiss="alert" type="button"></button>
<i class="fa fa-thumbs-up fa-3x"></i>
<article>
<h4>Nice! </h4>
<p>New Loan application successfully saved..<br /> </p>
</article>
</div>';
echo '<a href="newloan.php"><p align="center">Back</p></a>';
echo '<p align="center">If you want to view loan application! click <a href="approved_loan_list.php">here</a></p>';
echo mysql_insert_id();
die();
//
}
if(isset($\u POST['submitted'])){
//捕获数据
$loantype=$_POST['loantype'];
$calcno=$_POST['calcno'];
$memberid=$\u POST['memberid'];
$appno=date('Y-m-d')。“-LN/SS-”.mysql_insert_id();
$amount=$_POST['amount'];
$rental_type=$_POST['rental_type'];
$apr=$_POST['apr'];
$npy=$_POST['npy'];
$flatrate=$_POST['flatrate'];
$othercharges=$_POST['othercharges'];
$RETURNATION=$_POST[‘RETURNATION’];
$payment=$_POST['payment'];
$totpayed=$_POST['totpayed'];
$intpaid=$_POST['intpaid'];
日期默认时区设置(“亚洲/加尔各答”);
$created=日期('Y-m-d h:i:s');
$status=“待定”;
$description=“未定义”;
$accepted\u amount=“未定义”;
//创建新的贷款申请
$sql='INSERT INTO tbl_loan_应用程序值(空,'.$loantype.''.''.$calcno.'.'.$memberid.'.''.$appno.'.'.'.'.$amount.'.'.$amount.'.'.'.$rental_type.'.'.'.''.$npy.'.'.'.'.'.'.$flatrate.'.'.'.'.'.'.'.$othercharges.'.'.'.'.'.'.'.''.$Reumina,
“.$created.”、“.$status.”、“.$discription.”、“.$accepted.”、“.$payment.”、“.$TOTPADED.”、“.$INTPAYED.”;
/*否则{
}*/
mysql_query($sql,$conn)或die(mysql_error());
echo'在创建mysql数据库时,您需要这样做。例如:
CREATE TABLE IF NOT EXISTS `tablename` (
`Id` int(11) NOT NULL auto_increment,
`Username` varchar(255) NOT NULL,
`Password` varchar(255) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
这样,每次添加数据库记录时,ID列将自动增加为1。您不需要手动执行此操作,因为在使用$u POST方法时,它将具有唯一的ID(例如1、2、3、4等) 首先考虑删除mysql,支持mysql或PDO,因为MySQL函数被弃用。更多信息。
其次,如前所述,您使用的函数返回上次运行的查询的ID,因此如果上次查询没有生成新ID,它将返回0
开始学习MySQL或PDO,您可以考虑官方或PHP文档和./P>
另外,在相关通知中,最好说明希望使用insert影响的字段,如下所示:
INSERT INTO table1(field_name1, field_name2, ... , field_nameN) VALUES(value1, value2, ... , valueN)
决议建议:
使用一些默认appno插入它们,并添加此触发器:
CREATE TRIGGER `UPDATES` AFTER INSERT ON `tbl_loan_application`
FOR EACH ROW BEGIN
SET NEW.appno = CONCAT(CURDATE(), "-LN/SS-" , NEW.ID);
END
这将在每次插入后在数据库中自动分配代码。我假设数据库中的字段名是代码的“appno”,自动递增字段的“ID”
编辑:
触发器如何工作:
如上所述,触发器是在事件(更新、插入或删除)之后或之前执行的“存储函数”。正确语法为:
CREATE TRIGGER `Trigger_Name` [BEFORE/AFTER] [INSERT/UPDATE/DELETE] ON `table_name`
/* Some function usually with FOR EACH ROW */
通过使用NEW.field_name或OLD.field_name选择受影响的值。这两个选择器在操作前后返回受影响字段的值。因此,通过这样说,答案中给出的示例执行以下操作:
创建名为“更新”的触发器
将事件设置为在每次为表“tbl_loan_application”执行insert语句后激发
该函数逐个选择插入的所有行,并执行与php相同的操作,它连接CURDATE()
,即当前日期、字符串“-LN/SS-”和行的id,前提是您有一个
触发器和表一样,通常在mysql控制台中编写一次,但有些人使用其他工具(如phpmyadin)来简化过程
触发器在许多情况下都很方便,不仅可以编辑受监视的表,还可以编辑任何其他表
长话短说,每次编辑/插入新的/删除指定表中的行时,都会执行此代码。使用此函数生成格式良好的id
mt_rand(10,100);
我已经创建了一个表,它的名称是tbl_loan_application,这些数据应该转到该表。你是指其他表吗?不,使用上面的模型创建表。对于此行:[“主键(Id
)”],最后一行,你应该在其中一列(用于“Id”的列)上使用auto increment属性然后它会自动正确地递增-你可以随时添加它,不需要在你第一次创建表时添加。那么我要做什么呢…我是php的新手。我不知道如何使用mysql1@user3732725我添加了一些教程的链接。相信我,切换起来很容易。是的。很多人都这么说。。赫里斯托。。这这是我的坏习惯。我尽力了。但我的问题没有答案。这是一个贷款管理系统。我创建了一个大东西。当我改为mysqli时。这对我来说是一个大麻烦。这是我项目的最终状态。你有权添加触发器吗,@user3732725?对不起。我不明白这是什么。这是php的一个函数,它生成了一个unique id(md5)。你可以使用它生成一个唯一的id,然后你可以通过php使用insert INTO语句将其插入mysql。是的……但这不是很好的格式。我想要格式化的数字。你能告诉我你需要格式化的数字的目的吗?这篇文章被自动标记为低质量,因为它只是代码。你介意扩展我吗通过添加一些文本来解释它是如何解决问题的?