2013-07-25 133 views
0

我剛剛開始使用PHP,我想知道是否有人可以提供幫助。 我有這個如果輸入存在,不要插入,否則插入PHP mysql

$sql="INSERT INTO $tbl_name SET date='$mydate' , event='$myevent'"; 
$result=mysql_query($sql); 

我需要知道如何使它看是否存在事件,如果確實如此,我需要它做什麼,如果它不那麼插入它!

+2

您可以使用'INSERT IGNORE':http://stackoverflow.com/a/1361368/945775 – AgmLauncher

+0

myevent在哪裏?從數據庫或輸入? –

回答

0

將它分成2個查詢:

1)檢查事件是否存在。如果是,則不做任何事情,否則插入新事件

2)繼續您的查詢。這種方式將您的數據

0

嘗試在事件將allays存在:

$query = mysql_query("SELECT $myevent from $tbl_name ") 
$rows = mysql_num_rows($query) 

if ($num_rows > 0) { 
    // do nothing 
} 
else { 
    $sql = "INSERT INTO $tbl_name SET date='$mydate' , event='$myevent'"; 
    $result = mysql_query($sql); 
} 

一點題外話:mysql_功能已被取消,它的建議切換到mysqliPDO

+0

當您想要在找到重複密鑰時更改值時,使用'ON DUPLICATE KEY UPDATE'。這個問題表明他希望它什麼都不做。在這種情況下,'INSERT IGNORE'是適當的MySQL語法。另外,'ON DUPLICATE KEY UPDATE'需要一個表達式來遵循它來達到我的理解,以便在條件滿足時指定要更新的列。 –

+0

@ wes.hysell:已更新。 –

0

這是可以通過MySQL單獨完成的事情。

安裝在您的表運行以下MySQL命令的事件列的唯一關鍵:

CREATE UNIQUE INDEX `i_event` ON `TABLE_NAME_GOES_HERE` (`event`); 

欲瞭解更多信息:http://dev.mysql.com/doc/refman/5.0/en/create-index.html

這樣做對每一個可能的表,你期望在看$ tbl_name變量。

然後,改變你的PHP查詢:

$sql="INSERT IGNORE INTO $tbl_name SET date='$mydate' , event='$myevent'"; 
$result=mysql_query($sql); 

有關INSERT更多信息,可忽略:http://dev.mysql.com/doc/refman/5.5/en/insert.html

INSERT忽略根本,因爲它指出... ...它會嘗試插入行,除非它失敗驗證(在這種情況下,您從聲明HAS的唯一索引)。