2015-09-07 46 views
0

在我插入一行之前,我想檢查它的存在,以避免重複。重新使用(略有修改)查詢時,是否必須重新綁定我的PDO參數?

所以,我

$pdo = ConenctToDatabase(); 

// Check for existence - don't add a duplicate 
$sqlQuery = $pdo->prepare('SELECT campaign_id FROM campaigns WHERE (customer_id=:$customerId) AND (title=:campaignTitle) AND (description=:campaignDescription) AND (start_time=:startTimeStamp) AND (end_time=:endTimeStamp)'); 

$sqlQuery->bindParam(':customerId', $customerId, PDO::PARAM_INT); 
$sqlQuery->bindParam(':campaignTitle', $campaignTitle); 
$sqlQuery->bindParam(':campaignDescription', $campaignDescription); 
$sqlQuery->bindParam(':startTimeStamp', $campaignTitle); 
$sqlQuery->bindParam(':endTimeStamp', $endTimeStamp); 

如果它不存在,我想重用PDO聲明,改變SELECT到INSERT。

INSERT採用相同的參數。第二個prepare後,我必須再次綁定它們嗎?

+2

你可以使用'replace'。 –

+1

你試過了嗎?發生了什麼?另外你的綁定參數應該像這樣:$ sqlQuery-> bindParam(':customer',$ customerId,PDO :: PARAM_INT);'用於整數和'$ sqlQuery-> bindParam(':campaignTitle',$ campaignTitle,PDO: :PARAM_STR);'用於字符串和日期。 – Kuya

+0

在這種情況下,我不想更新數據庫。只有當SELECT失敗時,我纔會INSERT。 – Mawg

回答

1

實際上,如果您只是自己嘗試過,您會發現無法在語句中更改查詢。因此,即使對查詢進行了「輕微修改」,甚至沒有進入「重新綁定」值的階段,您的假設也會失敗。沒有「第二次準備」。通過調用prepare,您可以創建一個全新的語句,對其他語言不知情(PHP中任何其他變量的行爲都是常見的)。

+0

謝謝先生。你是社區的功勞。 – Kuya

相關問題