Php 正在放置注册时未创建的customerid
标题可能很复杂,但我会在这里解释。 因此,基本上当客户注册时,他们会得到一个唯一的客户代码,该代码在数据库中自动递增。但是,在注册时,客户会添加信用卡信息,并且客户代码是卡表中的外键。现在我要做的是将客户代码放入卡表中。是否有可能或是更好的只是要求用户在注册时添加信用卡 我的查询如下所示:Php 正在放置注册时未创建的customerid,php,mysql,Php,Mysql,标题可能很复杂,但我会在这里解释。 因此,基本上当客户注册时,他们会得到一个唯一的客户代码,该代码在数据库中自动递增。但是,在注册时,客户会添加信用卡信息,并且客户代码是卡表中的外键。现在我要做的是将客户代码放入卡表中。是否有可能或是更好的只是要求用户在注册时添加信用卡 我的查询如下所示: <?php $connection = mysql_connect("com-db-02.student-cit.local", "team16", "DbSLzU") or die (mysql_e
<?php
$connection =
mysql_connect("com-db-02.student-cit.local", "team16", "DbSLzU")
or die (mysql_error());
$db = mysql_select_db("team16") or die(mysql_error());
$DepotId = $_POST['depotId'];
$FName = $_POST['custFName'];
$LName = $_POST['custLName'];
$Email = $_POST['custEmail'];
$Address = $_POST['address'];
$Town = $_POST['town'];
$County = $_POST['county'];
$Eircode = $_POST['eircode'];
$Phone = $_POST['phone'];
$Password = $_POST['custPassword'];
$cardtype = $_POST['cardType'];
$cardHolder = $_POST['cardHolder'];
$cardNumber = $_POST['cardnumber'];
$expiryDate = $_POST['expirydate'];
$securitycode = $_POST['securitycode'];
// TO DO OTHER TEXTBOXES
$query1 = "SELECT DEPOTID FROM DEPOT WHERE LOCATION ='$DepotId'";
$result1 = mysql_query($query1);
$depotID = -1;
while($row = mysql_fetch_array($result1))
{
$depotID = $row['DEPOTID'];
}
$query3 = "INSERT INTO card(customerCode) SELECT customerCode * FROM customer WHERE customerCode= customerCode";
$query = "INSERT INTO CUSTOMER(DEPOTID, CUSTFNAME, CUSTLNAME, CUSTEMAIL, ADDRESS, TOWN, COUNTY, EIRCODE,
PHONE, CUSTPASSWORD) VALUES('$depotID','$FName', '$LName', '$Email', '$Address',
'$Town', '$County', '$Eircode', '$Phone', '$Password')";
$query2 = "INSERT INTO CARD(CARDTYPE, CARDHOLDER, CARDNUMBER, EXPIRYDATE, SECURITYCODE, CUSTOMERCODE) VALUES('$cardNumber','$cardtype', '$cardHolder', '$expiryDate', '$securitycode')";
/*$result = mysql_query($query);*/
$result = mysql_query($query2);
$result = mysql_query($query3);
echo $query2();
echo $query3();
?>
您可以使用获取上次插入的自动递增值
您应该首先执行INSERT-INTO-CUSTOMER
语句($query)。之后,您可以立即将卡记录与客户参考一起插入,如下所示:
<?php
$connection =
mysql_connect("com-db-02.student-cit.local", "team16", "DbSLzU")
or die (mysql_error());
$db = mysql_select_db("team16") or die(mysql_error());
$DepotId = $_POST['depotId'];
$FName = $_POST['custFName'];
$LName = $_POST['custLName'];
$Email = $_POST['custEmail'];
$Address = $_POST['address'];
$Town = $_POST['town'];
$County = $_POST['county'];
$Eircode = $_POST['eircode'];
$Phone = $_POST['phone'];
$Password = $_POST['custPassword'];
$cardtype = $_POST['cardType'];
$cardHolder = $_POST['cardHolder'];
$cardNumber = $_POST['cardnumber'];
$expiryDate = $_POST['expirydate'];
$securitycode = $_POST['securitycode'];
// TO DO OTHER TEXTBOXES
$query1 = "SELECT DEPOTID FROM DEPOT WHERE LOCATION ='$DepotId'";
$result1 = mysql_query($query1);
$depotID = -1;
while($row = mysql_fetch_array($result1))
{
$depotID = $row['DEPOTID'];
}
$query3 = "INSERT INTO card(customerCode) SELECT customerCode * FROM customer WHERE customerCode= customerCode";
$query = "INSERT INTO CUSTOMER(DEPOTID, CUSTFNAME, CUSTLNAME, CUSTEMAIL, ADDRESS, TOWN, COUNTY, EIRCODE,
PHONE, CUSTPASSWORD) VALUES('$depotID','$FName', '$LName', '$Email', '$Address',
'$Town', '$County', '$Eircode', '$Phone', '$Password')";
$query2 = "INSERT INTO CARD(CARDTYPE, CARDHOLDER, CARDNUMBER, EXPIRYDATE, SECURITYCODE, CUSTOMERCODE) VALUES('$cardNumber','$cardtype', '$cardHolder', '$expiryDate', '$securitycode')";
/*$result = mysql_query($query);*/
$result = mysql_query($query2);
$result = mysql_query($query3);
echo $query2();
echo $query3();
?>
插入卡中(客户代码、卡类型、持卡人、卡号、过期日期、,
证券代码)
值(最后一次插入ID(),,,,,,,,,?);
问号是在准备好的语句中插入值的占位符。你应该避免使用
此外,它们也被弃用。改用mysqli\uu
或PDO
请注意,在$query3中,您有一个不属于那里的*
,但无论如何,您不再需要该语句了。在解决方案中,您只需要两个查询,而不是三个查询。第二个用户读取上次插入的客户代码,同时执行卡片插入。最好在注册过程中让用户输入卡片信息,但使用插入查询时,应该是两个查询。一个用于在表中插入用户,如果插入成功,则获取用户表中最后一行插入的客户ID,然后构建第三个查询,将卡信息插入到其他表中,如用户卡信息@Matuesz首先,您必须在Customers表中输入数据,因为您的业务逻辑是:“Customers OWN/have CARDS(不是CARDS OWN/have users:-)GOT-IT”@Malikas如果我知道您需要进行3次查询,我不明白的是如何从customer表中提取customercode,然后将其放入card表中。您必须获取最后一个\u INSERT\u ID()[这就是它被大写的原因]。很高兴你已经接受了答案,这表明你的问题已经解决了:-)@Mateuszso我在查询或$result之后直接输入了“INSERT-INTO-CARD…”?另外,您在卡中有两次customercode,对吗?是的,您可以执行(1)INSERT-INTO-CUSTOMER
,然后(2)INSERT-INTO-card
,使用特殊功能LAST\u INSERT\u ID()
。我删除了重复字段。感谢您指出这一点,我没有注意到您已经有了它,我盲目地复制了它。出于某种原因,我得到了致命错误,它说:致命错误:调用未定义的函数INSERT-INTO-CARD(CARDNUMBER、CUSTOMERCODE、CARDTYPE、持卡人、EXPIRYDATE、SECURITYCODE,)value('02158',LAST_INSERT_ID,'Amex',jack jack jack',11/01/2019 033')()在结束括号前有一个尾随逗号:SECURITYCODE,)
,在语句末尾有一些尾随括号()
。。。。在LAST\u INSERT\u ID
之后没有必要的括号。应该是LAST\u INSERT\u ID()
。该问题已得到回答。为了您自己的利益,请确保远离mysql_uu函数,因为它们不再维护。同时停止在SQL语句中插入字符串。这是不安全的。您不会后悔使用PDO或mysqli编写语句。用正确的方法做。