2013-11-27 109 views
-2
$Link= mysql_connect("localhost", "root", "", ""); 
query = mysql_query($Link,"SELECT col_name FROM table_name WHERE col_name='$val'"); 
$num=mysql_num_rows($query); 
if($num==0){ 
    $query1 = mysql_query($Link,"INSERT INTO table_name(col_name)VALUES('$val')");) 
} 

將會有多個呼叫同時進行查詢。我使用這種方法來避免多次插入,但有時會插入多行。請幫助我。提前致謝。在同一時間多次插入查詢時,避免多次插入

感謝您的幫助..

來自不同用戶由我不是調用循環,但在同一時間多次調用該代碼。

+0

避免使用mysql_的*嘗試使用mysqli_ * http://us3.php.net/manual/en/book.mysqli.php –

回答

0

的mysql_query語法:resource mysql_query (string $query [, resource $link_identifier = NULL ])

$query1 = mysql_query("INSERT INTO table_name (col_name)VALUES('".$val."')"); 

全碼:

$Link= mysql_connect("localhost", "root", "", ""); 
$query = mysql_query($Link,"SELECT col_name FROM table_name WHERE col_name='".$val."'"); 
$num=mysql_num_rows($query); 
if($num==0){ 
    $query1 = mysql_query("INSERT INTO table_name(col_name)VALUES('".$val."')"); 
} 
0

如果有到Web服務器(一個或多個),該主機的PHP多個同時請求,選擇可能不返回任何結果多於一個這樣的請求,並且因爲每個這樣的請求執行插入,所以可能有多個插入。

如果您沒有運行Windows並且只有一個Web服務器,您可以使用PHP的信號量同步對此代碼的訪問。

但更好的是,你可以把一個唯一的限制在這個列在MySQL的表中的值?

0

雖然你的代碼是正確的,它不應該再插入,但

您應該添加一個唯一的關鍵是你的域,然後使用插入忽略

"INSERT IGNORE INTO table_name(col_name)VALUES('$val')"