php中的主键和外键
嗨,伙计们,我真的需要一些人帮我弄这些主键和外键。我试着寻找线索,但我没能找到。请帮帮我,如果以前有人问过这个问题,我很抱歉 我有两个表和它们的列 客户端 id(pk)|组织|描述|令牌 交易 trx|U id | c|U id(fk)| trx|U描述| trx|U日期|行动|无| U代币 在事务表中,我通过php myadmin手动输入其中的所有值,甚至选择c_id作为外键。因此,我的问题是,例如,我创建了一个名为ccc的新组织,我希望它自动分配给事务表中的c_id 3。每次我更新令牌,它应该以trx_id的形式显示在传输表中(我已经将其设置为自动递增) 但是c_id应该与我选择的组织匹配,并相应地增加行数………希望你们能尽快帮助我,如果我把你们弄糊涂了,我很抱歉……如果你们愿意,我可以发布代码:) 下面的脚本将添加客户端php中的主键和外键,php,mysql,Php,Mysql,嗨,伙计们,我真的需要一些人帮我弄这些主键和外键。我试着寻找线索,但我没能找到。请帮帮我,如果以前有人问过这个问题,我很抱歉 我有两个表和它们的列 客户端 id(pk)|组织|描述|令牌 交易 trx|U id | c|U id(fk)| trx|U描述| trx|U日期|行动|无| U代币 在事务表中,我通过php myadmin手动输入其中的所有值,甚至选择c_id作为外键。因此,我的问题是,例如,我创建了一个名为ccc的新组织,我希望它自动分配给事务表中的c_id 3。每次我更新令牌,它应
<?php
include 'connection.php';
// Get values from form
$organisation=$_POST['organisation'];
$description=$_POST['description'];
$token=$_POST['token'];
// Insert data into mysql
$sql="INSERT INTO client(organisation, description, token)VALUES('$organisation', '$description', '$token')";
$result=mysql_query($sql);
// if successfully insert data into database, displays message "Successful".
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='login_success.php'>Back to main page</a>";
}
else {
echo "ERROR";
}
// close connection
mysql_close();
?>
问题在于您将trx\u id设置为auotincrement。
如果您需要将每个客户端的事务数分开,那么trx_id不应该是自动递增的
例如,每次在事务表上插入时:
1:开始新的转换
2:number=计算将感兴趣客户的id作为c_id的交易数量
3:插入事务并设置trx_id=number+1
4:提交事务
注意:在这种情况下,trx_id不能唯一,因为您有更多的客户端。如果需要,可以在事务表中插入一个新列,该列是主键,在本例中是自动递增的
下面是我描述的代码快照:
//new db transaction
mysql_query("START TRANSACTION");
// count number of transaction for clients $_GET["id"]
$query_string_count = "SELECT count(*) AS num FROM transactions WHERE c_id =" . $_GET["id"];
$query = mysql_query($query_string_count);
$result = mysql_fetch_array($objQuery);
$num = $objResult["num"];
//insert new transaction for client $_GET["id"] with id $num + 1
INSERT INTO `transaction` (`trx_id`, `c_id`, `trx_description`, `trx_date`, `action`, `no_of_token`) VALUES ($num + 1, $_GET["id"], '$reason', '".$date."', 'Add token', '$newToken')";
//COMMIT -> persist on db
mysql_query("COMMIT TRANSACTION");
我该如何在这里发布我的脚本我该如何在注释下执行partOP可能还想知道为什么以及如何使用事务,他需要InnoDB
作为表引擎来使用它们。同样的例子,我现在看到的是,在clients表中插入$sql=“INSERT into client(organization,description,token)值(“$organization”,“$description”,“$token”)”;并在交易表中插入其$date=日期(“Y-m-d H:i:s”)$sql=“插入到事务(trx\u id
,c\u id
,trx\u说明,trx\u日期
,操作,没有任何标记)值(“$reason”,“$date”,“Add token”,“$newToken”)”$result=mysql\u查询($sql)$result=mysql\u query($sql)我刚刚发布了新代码……如果我只是在使用你的代码,我很抱歉,但我现在非常绝望和迷茫……)这就是论坛存在的原因。但是,对于生产代码,请始终清理您收到的输入:mysql_real_escape_string($_GET[“id”])$Organization=mysql_real_escape_字符串($_POST['Organization']);等等,对于你使用的每一个$_GET或$_postvalue,我有没有办法与你联系,请你进一步解释……我真的需要尽快得到帮助……这是我的工作……我很抱歉
//new db transaction
mysql_query("START TRANSACTION");
// count number of transaction for clients $_GET["id"]
$query_string_count = "SELECT count(*) AS num FROM transactions WHERE c_id =" . $_GET["id"];
$query = mysql_query($query_string_count);
$result = mysql_fetch_array($objQuery);
$num = $objResult["num"];
//insert new transaction for client $_GET["id"] with id $num + 1
INSERT INTO `transaction` (`trx_id`, `c_id`, `trx_description`, `trx_date`, `action`, `no_of_token`) VALUES ($num + 1, $_GET["id"], '$reason', '".$date."', 'Add token', '$newToken')";
//COMMIT -> persist on db
mysql_query("COMMIT TRANSACTION");