2017-03-15 4 views
-2

werfen Wie kann ich eine Zeile abzurufen, die ‚doppelten Eintrag‘ während des Einsetzenseine Zeile auswählen, der ‚doppelten Eintrag‘ während mysql INSERT in einer einzigen Abfrage

‚Mtabelle‘ Struktur

email varchar[50] unique 
name varchar[30] 

werfen Ich versuche, eine Zeile in mtable einzufügen, meine Anforderung ist es, die gesamte Zeile zu erhalten, wenn die E-Mail existiert, sonst wird es neue Werte in die Tabelle einfügen und Erfolg zurückgeben

+0

nur versuchen, diese select * from Mtabelle wo email='[email protected]‘row Prüfung zählen, wenn es größer als 0 E-Mail ist bereits vorhanden .wenn nicht größer als 0 E-Mail nicht exists – JYoThI

+0

Wie wäre es, einfach eine Select-Abfrage mit dieser E-Mail zu starten? –

+0

@JYoThI kann ich es in einer einzigen Abfrage beim Einfügen verwenden –

Antwort

0

Probieren Sie diese select * from mtable where email='[email protected]' Check Zeilen zählen, wenn es größer als 0 E-Mail ist bereits vorhanden .wenn nicht größer als 0 E-Mail existiert nicht

$stmt = $conn->prepare("SELECT * FROM mtable WHERE email=? "); 
    $stmt->bind_param('s',$email); 
    $stmt->execute(); 
    $get_result =$stmt->get_result(); 
    $row_count= $get_result->num_rows; 
    if($row_count>0) 
    { 
     //email already exists 
     $result = $get_result->fetch_assoc(); 
     print_r($result); 
    } 
    else 
    { 
     $stmt1 = $conn->prepare("insert into mtable(email,name)values(?,?)"); 
     $stmt1->bind_param('ss',$email,$name); 
     $stm1->execute(); 
     $row_count1= $stmt1->affected_rows; 
     if($row_count1>0) 
     { 
      echo "inserted successfully"; 
     } 
     $stmt1->close(); 
     $conn->close(); 
    } 
+0

Vielen Dank für Ihre Antwort, ich weiß, dass dies mit Mehrfachabfrage möglich ist Ich möchte wissen, ist es möglich, in einer einzigen Abfrage. –

+0

Ich denke, es ist nicht mit einer einzigen Abfrage möglich. und ich bin mir nicht sicher @CLIFFORDY – JYoThI

0

Wenn die Menge an Code ist Ihre Sorge, dann PDO betrachten, wie es Ihnen weniger Code nimmt für die beiden Abfragen als mysqli für ein

$stmt = $conn->prepare("SELECT * FROM mtable WHERE email=? "); 
$stmt->execute([$email]); 
$row = $stmt->fetch(); 
if(!$row) 
{ 
    $conn->prepare("insert into mtable(email,name)values(?,?)")->execute([$email,$name]); 
} 
Verwandte Themen