Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的主键和外键_Php_Mysql - Fatal编程技术网

php中的主键和外键

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。每次我更新令牌,它应

嗨,伙计们,我真的需要一些人帮我弄这些主键和外键。我试着寻找线索,但我没能找到。请帮帮我,如果以前有人问过这个问题,我很抱歉

我有两个表和它们的列

客户端 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 

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");