1

こんにちは、レコードをテーブルに挿入するためにphpコードを試しています。

<?php
$server = "localhost";
$user = "root";
$pwd = "";
$db_con = mysql_connect($server,$user,$pwd);
$select_db = mysql_select_db("test_database",$db_con);
$txnid = date ("ydmHis") . mt_rand(1000, 9999);
$custnumber = "4316010100000001";
$cust_mo_num = "7875432990";
$bc_id = "LTH001";
$timestamp = "12:12:12:12:12:12";
$amounta = "500";
$txnupdate = "INSERT INTO cust_txn (txnid,cust_num,cust_mo_num,bc_username,txn_time,txn_amount,txn_type,txn_status) VALUES ('$txnid','$custnumber','$cust_mo_num','$bc_id','$timestamp','$amounta','WTH','SUCC')";
$result = mysql_query($txnupdate);
mysql_close($db_con);
echo $result;
?>

このページを実行して更新すると、レコードが 1 回だけ挿入されます。(txnid は主キーであり、毎回変更します。)どこが間違っているのかを知る方法がありません。

4

2 に答える 2

1

あなたのコードは正常に動作しています。ubunthuボックスを使用しているため、テーブル名を大文字にします。(CUST_TXN テーブル名を指定した create table ステートメント)

ソース

<?php
$user = "root";
$pwd = "root123";
$db_con = mysql_connect($server,$user,$pwd);
$select_db = mysql_select_db("ci",$db_con);
$txnid = date ("ydmHis") . mt_rand(1000, 9999);
$custnumber = "4316010100000001";
$cust_mo_num = "7875432990";
$bc_id = "LTH001";
$timestamp = "12:12:12:12:12:12";
$amounta = "500";
$txnupdate = "INSERT INTO CUST_TXN (txnid,cust_num,cust_mo_num,bc_username,txn_time,txn_amount,txn_type,txn_status) VALUES ('$txnid','$custnumber','$cust_mo_num','$bc_id','$timestamp','$amounta','WTH','SUCC')";
echo $txnupdate;
$result = mysql_query($txnupdate);
mysql_close($db_con);
echo $result;
?>

結果

> select * from CUST_TXN;
+------------------+------------------+-------------+-------------+-------------------+------------+----------+------------+
| txnid            | cust_num         | cust_mo_num | bc_username | txn_time          | txn_amount | txn_type | txn_status |
+------------------+------------------+-------------+-------------+-------------------+------------+----------+------------+
| 1209042028162311 | 4316010100000001 | 7875432990  | LTH001      | 12:12:12:12:12:12 | 500        | WTH      | SUCC       |
| 1209042028177407 | 4316010100000001 | 7875432990  | LTH001      | 12:12:12:12:12:12 | 500        | WTH      | SUCC       |
| 1209042028194204 | 4316010100000001 | 7875432990  | LTH001      | 12:12:12:12:12:12 | 500        | WTH      | SUCC       |
| 1209042028342444 | 4316010100000001 | 7875432990  | LTH001      | 12:12:12:12:12:12 | 500        | WTH      | SUCC       |
| 1209042028358383 | 4316010100000001 | 7875432990  | LTH001      | 12:12:12:12:12:12 | 500        | WTH      | SUCC       |
| 1209042028362068 | 4316010100000001 | 7875432990  | LTH001      | 12:12:12:12:12:12 | 500        | WTH      | SUCC       |
+------------------+------------------+-------------+-------------+-------------------+------------+----------+------------+

また、txn_time 列に current_timestamp を使用することもできます

MYSQL DDL

CREATE TABLE CUST_TXN_2 ( txnid char(16), PRIMARY KEY(txnid), cust_num char(16), cust_mo_num char(10), bc_username char(6), txn_time timestamp DEFAULT CURRENT_TIMESTAMP, txn_amount varchar(10), txn_type varchar(5), txn_status varchar(10) );

ソース

<?php
$user = "root";
$pwd = "root123";
$db_con = mysql_connect($server,$user,$pwd);
$select_db = mysql_select_db("ci",$db_con);
$txnid = date ("ydmHis") . mt_rand(1000, 9999);
$custnumber = "4316010100000001";
$cust_mo_num = "7875432990";
$bc_id = "LTH001";
$amounta = "500";
$txnupdate = "INSERT INTO CUST_TXN_2 (txnid,cust_num,cust_mo_num,bc_username,txn_amount,txn_type,txn_status) VALUES ('$txnid','$custnumber','$cust_mo_num','$bc_id','$amounta','WTH','SUCC')";
echo $txnupdate;
$result = mysql_query($txnupdate);
mysql_close($db_con);
echo $result;
?>

結果

> select * from CUST_TXN_2;
+------------------+------------------+-------------+-------------+---------------------+------------+----------+------------+
| txnid            | cust_num         | cust_mo_num | bc_username | txn_time            | txn_amount | txn_type | txn_status |
+------------------+------------------+-------------+-------------+---------------------+------------+----------+------------+
| 1209042055524683 | 4316010100000001 | 7875432990  | LTH001      | 2012-04-09 20:55:52 | 500        | WTH      | SUCC       |
| 1209042055563581 | 4316010100000001 | 7875432990  | LTH001      | 2012-04-09 20:55:56 | 500        | WTH      | SUCC       |
| 1209042055564435 | 4316010100000001 | 7875432990  | LTH001      | 2012-04-09 20:55:56 | 500        | WTH      | SUCC       |
| 1209042055579931 | 4316010100000001 | 7875432990  | LTH001      | 2012-04-09 20:55:57 | 500        | WTH      | SUCC       |
+------------------+------------------+-------------+-------------+---------------------+------------+----------+------------+
于 2012-04-09T15:17:26.610 に答える
1

$txnid はタイムスタンプのように聞こえます。Mysql はそれを自動的に挿入できます。次のように設定します

ALTER TABLE CUST_TXNCHANGE txnid txnidTIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP.

コードでタイムスタンプを設定しなくなりました。

于 2012-04-09T15:35:52.237 に答える