PHPに投稿するテキストエリアがあります。
PHPスクリプトでは、テキストエリアを改行で分解します。
次に、配列を反復処理するループを作成して、値がMySQLにすでに存在するかどうかを確認します。すでに存在する場合は続行し、存在しない場合は挿入します。
これは私のコードがどのように見えるかです:
$route = $_POST['gatewayvalue'];
$account_number = $_POST['account_number'];
$route = strtoupper($route);
$routelist = explode("\n", $route);
$count = count($routelist);
$invalid = 0;
for($i=0;$i<$count;$i++){
if(preg_match("/000F26/i", $routelist[$i])){
$routeinsert = str_replace("000F26", "", $routelist[$i]);
$verify = "SELECT route FROM gw_gateway WHERE route='$routeinsert'";
$result = mysql_query($verify);
$row = mysql_fetch_array($result);
$checkroute = $row['route'];
if($checkroute == $routeinsert){
$validate = false;
$invalid++;
continue;
}
else{
$validate = true;
}
}
else{
$routeinsert = $routelist[$i];
$verify = "SELECT route FROM gw_gateway WHERE route='$routeinsert'";
$result = mysql_query($verify);
$row = mysql_fetch_array($result);
$checkroute = $row['route'];
if($checkroute == $routeinsert){
$validate = false;
$invalid++;
continue;
}
else{
$validate = true;
}
}
if($validate == true){
$updateroutesql = "INSERT INTO gw_gateway SET route='$routeinsert', gw_reseller1='$account_number'";
$updateroutesqlres=mysql_query($updateroutesql) or die("Can not perform update query !".mysql_error());
}
}
ただし、2つの同様の値を挿入すると、たとえば、テキストエリアに030301が2回挿入されます。最初の値は拒否されますが、2番目の値は空の値として挿入されます。
私のテーブルには3つのフィールドがあります。
+----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| route | varchar(20) | NO | PRI | | |
| account_number | varchar(20) | YES | | NULL | |
| gw_reseller1 | varchar(45) | YES | | NULL | |
+----------------+-------------+------+-----+---------+-------+
そして、これは私が2つの同様の値を挿入しようとしたときに起こったことです
+----------+----------------+--------------+
| route | account_number | gw_reseller1 |
+----------+----------------+--------------+
| 030302 | NULL | NULL |
| NULL | 201-000001 | |
| 030301 | NULL | 201-000001 |
+----------+----------------+--------------+