2017-05-01 40 views
-2

我知道我不能在插入語句中使用WHERE子句,但我需要排除某些條目插入到我的表中。這是我正在與什麼工作:從PHP中插入具有特定值的項目使用PHP

foreach($json['Meetings'] as $meet) { 
$add1 = $meet['AddressLine1']; 
$add2 = $meet['AddressLine2']; 
$cpid = $meet['CongressPersonID']; 
$cpsd = $meet['CongressPersonStateDistrict']; 
$start = $meet['Start']; 
$end = $meet['End']; 
$loc = $meet['Location']; 
$meetwith = $meet['MeetingWith']; 
$name = $meet['Name']; 
$ph = $meet['PhoneNumber']; 
$meetid = $meet['Id']; 
$status = $meet['Status']; 

$sql = "INSERT INTO Meetings (AddressLine1, AddressLine2, CongressPersonID, CongressPersonStateDistrict, End, Location, MeetingWith, Meeting_Id, Name, PhoneNumber, Start, Status) 
     VALUES ('$add1', '$add2', '$cpid', '$cpsd', '$end', '$loc', '$meetwith', '$meetid', '$name', '$ph', '$start', '$status')"; 

我有一個JSON文件,我通過PHP解析,它的插入很好,我的數據庫。

我唯一關心的信息是狀態。這個值可以是「確認」或「不需要」。

我只想插入行,如果Status =「確認」。

真的,我想排除那些在過程中儘早未被確認的條目。我在這方面還不是很有經驗。我想到的

一種解決方法是插入的一切,然後立即進入並刪除其中的狀態!=「確認」,但似乎像一個innefficient方式做到這一點的任何條目。

+4

你可以簡單地添加一個檢查,比如'如果($符合[ '狀態'] == '確認')', –

+4

你的代碼很可能易受[** SQL注入**](HTTPS:/ /en.wikipedia.org/wiki/SQL_injection)攻擊。你應該使用[** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)或[** PDO **](https://secure.php.net/ manual/en/pdo.prepared-statements.php)準備帶有綁定參數的語句,如[**這篇文章**]所述(https://stackoverflow.com/questions/60174/how-can-i-prevent-sql步噴射功能於PHP)。 –

回答

1

可以使用continue方法類似

foreach($json['Meetings'] as $meet) { 
    if($meet['Status'] != 'Confirmed') 
     continue; 
    $add1 = $meet['AddressLine1']; 
    $add2 = $meet['AddressLine2']; 
    $cpid = $meet['CongressPersonID']; 
    $cpsd = $meet['CongressPersonStateDistrict']; 
    $start = $meet['Start']; 
    $end = $meet['End']; 
    $loc = $meet['Location']; 
    $meetwith = $meet['MeetingWith']; 
    $name = $meet['Name']; 
    $ph = $meet['PhoneNumber']; 
    $meetid = $meet['Id']; 
    $status = $meet['Status']; 
    $sql = "INSERT INTO Meetings (AddressLine1, AddressLine2, CongressPersonID, CongressPersonStateDistrict, End, Location, MeetingWith, Meeting_Id, Name, PhoneNumber, Start, Status) 
     VALUES ('$add1', '$add2', '$cpid', '$cpsd', '$end', '$loc', '$meetwith', '$meetid', '$name', '$ph', '$start', '$status')"; 
+0

太簡單了,謝謝一堆。 – AdamDallas

0

使用你的代碼,我想補充一個條件你foreach循環內部檢查的$meet['Status']值。

foreach($json['Meetings'] as $meet) { 
    if ($meet['Status'] == "Confirmed") { 
     $add1 = $meet['AddressLine1']; 
     $add2 = $meet['AddressLine2']; 
     $cpid = $meet['CongressPersonID']; 
     $cpsd = $meet['CongressPersonStateDistrict']; 
     $start = $meet['Start']; 
     $end = $meet['End']; 
     $loc = $meet['Location']; 
     $meetwith = $meet['MeetingWith']; 
     $name = $meet['Name']; 
     $ph = $meet['PhoneNumber']; 
     $meetid = $meet['Id']; 
     $status = $meet['Status']; 

     $sql = "INSERT INTO Meetings (AddressLine1, AddressLine2, CongressPersonID, CongressPersonStateDistrict, End, Location, MeetingWith, Meeting_Id, Name, PhoneNumber, Start, Status) 
     VALUES ('$add1', '$add2', '$cpid', '$cpsd', '$end', '$loc', '$meetwith', '$meetid', '$name', '$ph', '$start', '$status')"; 
    } 
} 
+0

謝謝!知道它必須是這樣簡單的東西!今天學到了新東西。 – AdamDallas

相關問題