- 已加入
- 1/14/15
- 訊息
- 2
- 互動分數
- 0
- 點數
- 0
- 年齡
- 32
各位大大好^^小弟是一個程試初學者,請各位大大不另解答,我已經參考過很多網頁資料了,可是就毫無頭緒
每60秒會自動匯入資料庫,但是這程試卻無法自動偵測,資料是否有重複,只會無限的每60秒匯資料進去資料庫,但不具有辨識是否資料有重複,總共設定6個欄位,而這些資料只有2個資料欄位,不會做成是判斷到欄位,其餘的4個欄位只要被判斷到與MYSQL內資料有不同,就會進行覆寫。
簡單整理第一、
自動偵測MYSQL是否有重覆資料,沒有就自動寫入MYSQL資料庫
第二點判斷欄位資料是否有作修改,有的話進行覆寫到資料庫裡面
PS: CS_NO、IN_TIME這兩個數據欄位就算資料修改也不會做覆寫,
KIND、CODE、CS_PLACE、DEPTNAME 這四個欄位有做修改數據的動作就會自動偵測並覆寫進去MYSQL資料庫裏面
if ($rowcount>0)
{
$selconn = $connsql;
$impcount = 0;
if (!$conn = mysql_pconnect('127.0.0.1', 'cn00', 'cn00'))//連結備份資料庫(本地端為127.0.0.1),帳號:'',密碼:''
{
echo "<font color='red'>[MySQL] Cannot connect server test .<br></font>\n";
}
elseif (!mysql_select_db('dest', $conn)) //與指定資料庫連線
{
mysql_close($conn);
echo "<font color='red'> Cannot connect to target table </font>\n";
}
else
{
$cnt = 0;
mysql_query("SET NAMES 'BIG5'");
//insert data
for($cnt = 0; $cnt < $rowcount; $cnt++)
{
//141行新增檢查功能開始
$v1 = $my_csNo[$cnt];
$v2 = $my_Kind[$cnt];
$v3 = $my_code[$cnt];
$v4 = $my_inTime[$cnt];
$v5 = $my_csPlace[$cnt];
$v6 = $my_deptName[$cnt];
$query = "INSERT INTO cs (CS_NO,KIND,CODE,IN_TIME,CS_PLACE,DEPTNAME) VALUES ('$v1','$v2','$v3','$v4','$v5','$v6')"; //trim(stripslashes($sql[1])); //20110524,fix duke,stripslashes()會造成錯誤所以不用
try
{
//檢查152行資料是否有重複程式碼在這行一定要下完
$rs = mysql_query($query, $conn);
//$RecordsAffected = mssql_rows_affected($conn);
if (!$rs)
{
echo "<font color='red'>案號:" . $query . " 匯入失敗! </font>\n";
}
elseif (!is_resource($rs))
{
//echo "Affected-rows=$RecordsAffected<br>\n";
$impcount++;
echo "案號:" . $query . " 匯入成功.<br>\n";
}
else
{
//query: 這用不到,也執行不到
echo "<table border=1 cellspacing=1 style='font-size=10pt;'>\n";
//fields name
echo "<tr>\n";
while ($obj = mysql_fetch_field($rs)) echo "<th>" . $obj->name . "</th>\n";
echo "</tr>\n";
//fields value
$rowcount = 0;
while ($row = mssql_fetch_row($rs))
{
$rowcount++;
echo "<tr>\n";
for ($i = 0; $i < count($row); $i++)
{
if (is_null($row[$i]))
echo "<td>(null)</td>\n";
else
echo "<td>" . trim($row[$i]) . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n" . "count=$rowcount,Affected-rows=$RecordsAffected<br><hr>\n";
mssql_free_result($rs);
}
}
catch(Exception $ex)
{
echo "<font color='red'>" . $ex->errorMessage() . "</font><br><hr>\n";
}
}//end for
mysql_close($conn);
}
} //end if
if ($rowcount>0) echo "<br>[" . date("Y/m/d H:i:s", time()) . "] 匯入 成功 $impcount 筆, 失敗 " . ($rowcount - $impcount) . " 筆.<br>\n";
?>
</body>
</html>
每60秒會自動匯入資料庫,但是這程試卻無法自動偵測,資料是否有重複,只會無限的每60秒匯資料進去資料庫,但不具有辨識是否資料有重複,總共設定6個欄位,而這些資料只有2個資料欄位,不會做成是判斷到欄位,其餘的4個欄位只要被判斷到與MYSQL內資料有不同,就會進行覆寫。
簡單整理第一、
自動偵測MYSQL是否有重覆資料,沒有就自動寫入MYSQL資料庫
第二點判斷欄位資料是否有作修改,有的話進行覆寫到資料庫裡面
PS: CS_NO、IN_TIME這兩個數據欄位就算資料修改也不會做覆寫,
KIND、CODE、CS_PLACE、DEPTNAME 這四個欄位有做修改數據的動作就會自動偵測並覆寫進去MYSQL資料庫裏面
if ($rowcount>0)
{
$selconn = $connsql;
$impcount = 0;
if (!$conn = mysql_pconnect('127.0.0.1', 'cn00', 'cn00'))//連結備份資料庫(本地端為127.0.0.1),帳號:'',密碼:''
{
echo "<font color='red'>[MySQL] Cannot connect server test .<br></font>\n";
}
elseif (!mysql_select_db('dest', $conn)) //與指定資料庫連線
{
mysql_close($conn);
echo "<font color='red'> Cannot connect to target table </font>\n";
}
else
{
$cnt = 0;
mysql_query("SET NAMES 'BIG5'");
//insert data
for($cnt = 0; $cnt < $rowcount; $cnt++)
{
//141行新增檢查功能開始
$v1 = $my_csNo[$cnt];
$v2 = $my_Kind[$cnt];
$v3 = $my_code[$cnt];
$v4 = $my_inTime[$cnt];
$v5 = $my_csPlace[$cnt];
$v6 = $my_deptName[$cnt];
$query = "INSERT INTO cs (CS_NO,KIND,CODE,IN_TIME,CS_PLACE,DEPTNAME) VALUES ('$v1','$v2','$v3','$v4','$v5','$v6')"; //trim(stripslashes($sql[1])); //20110524,fix duke,stripslashes()會造成錯誤所以不用
try
{
//檢查152行資料是否有重複程式碼在這行一定要下完
$rs = mysql_query($query, $conn);
//$RecordsAffected = mssql_rows_affected($conn);
if (!$rs)
{
echo "<font color='red'>案號:" . $query . " 匯入失敗! </font>\n";
}
elseif (!is_resource($rs))
{
//echo "Affected-rows=$RecordsAffected<br>\n";
$impcount++;
echo "案號:" . $query . " 匯入成功.<br>\n";
}
else
{
//query: 這用不到,也執行不到
echo "<table border=1 cellspacing=1 style='font-size=10pt;'>\n";
//fields name
echo "<tr>\n";
while ($obj = mysql_fetch_field($rs)) echo "<th>" . $obj->name . "</th>\n";
echo "</tr>\n";
//fields value
$rowcount = 0;
while ($row = mssql_fetch_row($rs))
{
$rowcount++;
echo "<tr>\n";
for ($i = 0; $i < count($row); $i++)
{
if (is_null($row[$i]))
echo "<td>(null)</td>\n";
else
echo "<td>" . trim($row[$i]) . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n" . "count=$rowcount,Affected-rows=$RecordsAffected<br><hr>\n";
mssql_free_result($rs);
}
}
catch(Exception $ex)
{
echo "<font color='red'>" . $ex->errorMessage() . "</font><br><hr>\n";
}
}//end for
mysql_close($conn);
}
} //end if
if ($rowcount>0) echo "<br>[" . date("Y/m/d H:i:s", time()) . "] 匯入 成功 $impcount 筆, 失敗 " . ($rowcount - $impcount) . " 筆.<br>\n";
?>
</body>
</html>