Ich habe ein Formular, das von einem Sport-Trainer ausgefüllt wird. Ein Trainer kann mehrere Sportarten haben, die er trainiert, und ein Spieler kann mehrere Sportarten spielen. Wenn also ein Trainer einen Spieler zu einem Team-Roster hinzufügen möchte, muss ich prüfen, ob der Spieler existiert, und wenn dem so ist, dann füge einfach die Spieler-ID zu der Roster-Tabelle hinzu und füge den Spieler nicht erneut zur Spielertabelle hinzu. Unten ist die beste Darstellung dessen, was ich erreichen möchte.
if (isset($_POST['submit'])) {
$email = mysqli_real_escape_string($con2, $_POST['email']);
$sql1 = "SELECT id, email FROM users WHERE email='$email'";
$result = $con2->query($sql1);
if ($result->num_rows > 0) {
//here is where I want to just add specific information
} //I have tried if $result == 0 and else if $result == 0
//here is where I would add the user if the email doesn't exist.
} <-- //I feel like the issue is the if (isset($_POST['submit'])) which end just before this line.
So bekomme ich gemischte Ergebnisse auf, wo stelle ich das Ende des (isset ($ _ POST [ 'submit'])). Ich versuche herauszufinden, wie man den $ _POST behalten kann, aber nicht alles innerhalb von ausführen. Ich weiß das ziemlich gut, also bitte vergib mir, wenn meine Frage einfach erscheint. Danke, dass Sie sich die Zeit genommen haben, meine Frage zu überprüfen.
ZUSÄTZLICHE INFORMATIONEN So habe ich kein Problem, die Anzahl der Zeilen zu bekommen. Das Problem ist, dass der Benutzer, selbst wenn die E-Mail existiert, in der Benutzertabelle dupliziert wird, aber in den restlichen Tabellen wird der Benutzer nicht dupliziert. Grundsätzlich wird alles innerhalb von (iset ($ _ POST ['submit'])) ausgeführt, was sinnvoll ist, denn wenn das Formular übergeben wird, wird dies als wahr gewertet.
Im Wesentlichen möchte ich ein if sonst innerhalb der (isset ($ _ POST ['submit'])) ausführen, ohne beide ausgeführt werden, wenn das Sinn machen.
** WARNUNG **: Wenn Sie 'mysqli' verwenden, sollten Sie [parametrisierte Abfragen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) und [' bind_param' verwenden ] (http://php.net/manual/en/mysqli-stmt.bind-param.php), um Benutzerdaten zu Ihrer Anfrage hinzuzufügen. ** Verwenden Sie ** NICHT ** manuelles Escapen und String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie schwerwiegende [SQL-Injektionsfehler] (http://bobby-tables.com/) erstellen werden, wenn Sie jemals vergessen, etwas richtig zu entkommen. – tadman
versuchen Sie Benutzer zu aktualisieren, die in der Datenbank vorhanden sind? nur wenn er eine email hat? –
Bitte aufhören zu testen 'num_rows' es ist nicht immer zuverlässig - die Daten sind immer. Wenn Sie sich die Ergebnisse nicht ansehen wollen, dann wählen Sie einfach "SELECT count (id) FROM Benutzer WHERE email = '$ email'". Und holen Sie das Ergebnis - es wird _ immer eine Zeile_ mit einer Zählung von Null oder mehr sein. Testen Sie immer "echte Daten", alles andere kann "unzuverlässig" sein. Sie können immer eine 'LIMIT 1' hinzufügen, wenn Effizienz ein Anliegen ist –