| Autor | Beitrag | 
| Th69 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: Di 01.11.16 09:00 
 
Ich möchte noch mal auf meinen UNION -Vorschlag hinweisen    Aber mit einer einfachen if -Abfrage läßt sich natürlich auch die OR -Query auflösen... | 
|  | 
| Csharp-programmierer  
          Beiträge: 696
 Erhaltene Danke: 10
 
 Windows 8.1
 C# (VS 2013)
 
 | 
Verfasst: Di 01.11.16 14:19 
 
Okay. Ich habe jetzt diesen Code:
 		                       PHP-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 
 | $CurrentUser = mysqli_real_escape_string($conn, $_POST["currUsr"]);$sqlQuery = "SELECT `To_ID` FROM `MainlysoftFreundesliste` WEHRE `From_ID`='$CurrentUser' UNION SELECT `From_ID` FROM `MainlysoftFreundesliste` WHERE `To_ID`='$CurrentUser'";
 $result = mysqli_query($conn, $sqlQuery);
 if($result)
 {
 if($result->num_rows > 0) {
 while($row1 = $result->fetch_assoc())
 {
 $zwischenVariable = $row1["To_ID"];
 $newQuery = "SELECT `name`, `vorname`, `language`, `gender` FROM `MainlysoftBenutzer` WHERE `ID`='$zwischenVariable'";
 $newResult = mysqli_query($conn, $newQuery);
 if($newResult)
 {
 if ($newResult->num_rows > 0) {
 while($row = $newResult->fetch_assoc()) {
 echo $row["name"]. ";" . $row["vorname"]. ";" .$row["language"]. ";" .$row["gender"]. "";
 }
 } else {
 echo "0 results";
 }
 }
 }
 }
 }
 else
 {
 echo "Error in SQL statement";
 }
 |  Aber nun bekomme ich den Fehler: Error in SQL statement...
 Die Datenbanktabelle sieht jetzt so aus:
 ID     |  From_ID   |  To_ID |
 ------------------------------
 1      |   1        |    2   |_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
 | 
|  | 
| jfheins 
          Beiträge: 918
 Erhaltene Danke: 158
 
 Win 10
 VS 2013, VS2015
 
 | 
Verfasst: Di 01.11.16 15:03 
 
Der Fehler ist so natürlich wenig hilfreich.
 Informativer wird's, wenn du die Zeile im else-Zweig so änderst:
 		                       PHP-Quelltext 
 									| 1:2:
 3:
 4:
 
 | else{
 echo "Error in SQL statement: " . mysqli_error($conn);
 }
 |  Bitte mal probieren und rückmelden   | 
|  | 
| Th69 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: Di 01.11.16 15:16 
 
'WEHRE't den Anfängen.   | 
|  | 
| Csharp-programmierer  
          Beiträge: 696
 Erhaltene Danke: 10
 
 Windows 8.1
 C# (VS 2013)
 
 | 
Verfasst: Di 01.11.16 15:47 
 
Hupps. WHERE ist aber auch ein doofes Wort    												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 
 | $CurrentUser = mysqli_real_escape_string($conn, $_POST["currUsr"]);$sqlQuery = "SELECT `To_ID` FROM `MainlysoftFreundesliste` WHERE `From_ID`='$CurrentUser' UNION SELECT `From_ID` FROM `MainlysoftFreundesliste` WHERE `To_ID`='$CurrentUser'";
 $result = mysqli_query($conn, $sqlQuery);
 if($result)
 {
 if($result->num_rows > 0)
 {
 while($row1 = $result->fetch_assoc())
 {
 $zwischenVariable = $row1["To_ID"];
 $newQuery = "SELECT `name`, `vorname`, `language`, `gender` FROM `MainlysoftBenutzer` WHERE `ID`='$zwischenVariable'";
 $newResult = mysqli_query($conn, $newQuery);
 if($newResult)
 {
 if ($newResult->num_rows > 0) {
 while($row = $newResult->fetch_assoc()) {
 echo $row["name"]. ";" . $row["vorname"]. ";" .$row["language"]. ";" .$row["gender"]. "";
 }
 } else {
 echo "0 results";
 }
 }
 else
 {
 echo "error here";
 }
 }
 }
 else
 {
 echo "now here error";
 }
 |  Jetzt kommt nur noch der Error: now error here. Das heißt ja, dass die Datenbank keine passenden Datensätze findet, oder wie?
Moderiert von  Christian S.: C#- durch PHP-Tags ersetzt_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Di 01.11.16 16:18 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| Palladin007 
          Beiträge: 1282
 Erhaltene Danke: 182
 
 Windows 11 x64 Pro
 C# (Visual Studio Preview)
 
 | 
Verfasst: Mi 02.11.16 00:22 
 
	  |  Th69 hat folgendes geschrieben  : |  	  | Ich möchte noch mal auf meinen UNION-Vorschlag hinweisen  | 
 Wo genau wäre überhaupt der Vorteil, die zwei Selects per Union zu verknüpfen anstatt die UserId mit beiden IDs in der Tabelle zu vergleichen?
 Also entweder das:
 		                       SQL-Anweisung 
 									| 1:2:
 3:
 
 | SELECT *FROM Friends
 WHERE FromUserId = 123 OR ToUserId = 123
 |  Oder:
 		                       SQL-Anweisung 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 
 | SELECT *FROM Friends
 WHERE FromUserId = 123
 
 UNION
 
 SELECT *
 FROM Friends
 WHERE ToUserId = 123
 |  Am Ende kommen alle Datensätze raus, bei denen sowohl FromUserId oder ToUserId gleich 123 sind.
 Oder übersehe ich da was? | 
|  | 
| Th69 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: Mi 02.11.16 10:38 
 
Hallo Palldadin007,
 bei der OR-Query müßtest du aber noch explizit die beiden Felder FromUserId und ToUserId überprüfen - bei der UNION-Version (in meiner Variante!) hat man sofort in einer Spalte alle Freunde stehen.
 
 Abfragen mit * sollte man generell im Code vermeiden.
 | 
|  | 
| Palladin007 
          Beiträge: 1282
 Erhaltene Danke: 182
 
 Windows 11 x64 Pro
 C# (Visual Studio Preview)
 
 | 
Verfasst: Mi 02.11.16 12:07 
 
Stimmt, damit bekomme ich dann eine flache Liste mit nur einer Spalte.
 Endlich hab ich auch mal ein Beispiel, wo Union sinnvoll ist, hab ich bisher noch nie verwendet    	  | Zitat: |  	  | Abfragen mit * sollte man generell im Code vermeiden. | 
 Klar, war auch nur ein Beispiel weil wegen spät und so   | 
|  | 
| Csharp-programmierer  
          Beiträge: 696
 Erhaltene Danke: 10
 
 Windows 8.1
 C# (VS 2013)
 
 | 
Verfasst: Do 03.11.16 16:53 
 
Also ich verstehe den Fehler jetzt nicht ganz.
 												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 
 | $CurrentUser = mysqli_real_escape_string($conn, $_POST["currUsr"]);$sqlQuery = "SELECT `To_ID` FROM `MainlysoftFreundesliste` WHERE `From_ID`='$CurrentUser' UNION SELECT `From_ID` FROM `MainlysoftFreundesliste` WHERE `To_ID`='$CurrentUser'";
 $result = mysqli_query($conn, $sqlQuery);
 if($result)
 {
 while($row1 = $result->fetch_array())
 {
 $zwischenVariable = $row1["To_ID"];
 $newQuery = "SELECT `name`, `vorname`, `language`, `gender` FROM `MainlysoftBenutzer` WHERE `ID`='$zwischenVariable'";
 $newResult = mysqli_query($conn, $newQuery);
 if($newResult)
 {
 if ($newResult->num_rows > 0) {
 while($row = $newResult->fetch_assoc()) {
 echo $row["name"]. ";" . $row["vorname"]. ";" .$row["language"]. ";" .$row["gender"]. "";
 }
 } else {
 echo "0 results";
 }
 }
 else
 {
 echo "error here";
 }
 }
 
 }
 else
 {
 echo "Error in SQL statement";
 }
 |  Wenn ich diesen Script jetzt ausführe, bekommt ich keine Antwort (oder eine leere). Ich möchte nur, dass die Tabelle "Freundesliste" durchsucht wird. Und für jeden Freund, der mit dem aktuell eingeloggten User befreundet ist, soll nochmal in der Tabelle "Benutzer" gesucht werden und dann Daten rausgegeben werden._________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
 | 
|  | 
| Th69 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: Do 03.11.16 19:57 
 
Nur eine Vermutung: passen die Datentypen?
Stehen in den Datenbankspalten From_ID und To_ID denn wirklich Strings drin (oder Integer) - du verwendest ja Hochkommata?
 
 Und bei einer UNION bin ich mir nicht sicher, was der genauer Spaltenname der Query ist (d.h. laß dir doch mal $zwischenVariable ausgeben) - evtl. nimm mal $row1[0].
 | 
|  | 
| Csharp-programmierer  
          Beiträge: 696
 Erhaltene Danke: 10
 
 Windows 8.1
 C# (VS 2013)
 
 | 
Verfasst: Fr 04.11.16 17:04 
 
In der Datenbank `Freundesliste` sind nur Datentypen vom Typ INT. 
 Ich habe mir mal die zwischenVariable  und row[0]  geechoed. Aber die Serverantwort war leer   Moderiert von  Th69: PHP-Tags hinzugefügt_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
 | 
|  | 
| Th69 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: Fr 04.11.16 17:42 
 
Was steht denn in $CurrentUser  drin? Und ich wiederhole meine Frage:
 Warum verwendest du bei deren Benutzung dann die Hochkommata (Zahlen (IDs) werden direkt verwendet - wie in C# auch ;- )?
 s.a. das $limit -Beispiel in How to include a PHP variable inside a MySQL insert statement | 
|  | 
| Csharp-programmierer  
          Beiträge: 696
 Erhaltene Danke: 10
 
 Windows 8.1
 C# (VS 2013)
 
 | 
Verfasst: Fr 04.11.16 19:18 
 
Ups, mir ist ein kleiner großer Fehler passiert. In der C# Anwendung habe ich der NameValueConnection einen falschen Parametername gegeben. Jetzt funktioniert es halbwegs.
Wenn sich jetzt der User einloggt, bekommt dieser eingeloggte User sich selbst als Freund, das liegt wahrscheinlich daran, dass dass der eingeloggte User mit einem Freund an einem Datensatz hängt. SQL gibt jetzt wahrscheinlich den einen User aus, der in dem Fall der eingeloggte User ist.
 Wie kann man das so programmieren, dass genau der andere Datensatz als der eingeloggte User ausgegeben wird?
 _________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Fr 04.11.16 19:41 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| Th69 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: Fr 04.11.16 19:53 
 
Bei der UNION-Query kann das aber nur passieren, wenn in einem Datensatz derselbe Wert in beiden Spalten steht. | 
|  | 
| Csharp-programmierer  
          Beiträge: 696
 Erhaltene Danke: 10
 
 Windows 8.1
 C# (VS 2013)
 
 | 
Verfasst: Fr 04.11.16 20:10 
 
Vielen Dank Leute,
 jetzt funktioniert es. Der Fehler war, dass ich in der SQL Abfrage * statt `From_ID` genommen habe. Jetzt funktionierts    Vielen Dank, an die Helfer  _________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
 | 
|  | 
| Csharp-programmierer  
          Beiträge: 696
 Erhaltene Danke: 10
 
 Windows 8.1
 C# (VS 2013)
 
 | 
Verfasst: Fr 04.11.16 20:36 
 
Ups, das Thema ist doch noch offen. Ich habe noch ein kleines Problem.
 In der Datenbank `Freundesliste` sind nun 3 Datensätze. Jetzt ist aber nur das Problem, dass die PHP Datei nur einen von 2 Freunden raussendet. Wieso?
 												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 
 | if($conn){
 $CurrentUser = mysqli_real_escape_string($conn, $_POST["currUsr"]);
 $sqlQuery = "SELECT `To_ID` FROM `MainlysoftFreundesliste` WHERE From_ID='$CurrentUser' UNION SELECT `From_ID` FROM `MainlysoftFreundesliste` WHERE To_ID='$CurrentUser'";
 $result = mysqli_query($conn, $sqlQuery);
 if($result)
 {
 if ($result->num_rows > 0) {
 while($row1 = $result->fetch_array())
 {
 $zwischenVariable = $row1["To_ID"];
 
 $newQuery = "SELECT `name`, `vorname`, `language`, `gender` FROM `MainlysoftBenutzer` WHERE `ID`='$zwischenVariable'";
 $newResult = mysqli_query($conn, $newQuery);
 if($newResult)
 {
 if ($newResult->num_rows > 0) {
 while($row = $newResult->fetch_assoc()) {
 echo $row["name"]. ";" . $row["vorname"]. ";" .$row["language"]. ";" .$row["gender"]. "";
 }
 } else {
 echo "0 results";
 }
 }
 else
 {
 echo "0 results";
 }
 }
 } else {
 echo "o results";
 }
 }
 else
 {
 echo "Error in SQL statement";
 }
 }
 | _________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 05.11.16 02:56 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| Csharp-programmierer  
          Beiträge: 696
 Erhaltene Danke: 10
 
 Windows 8.1
 C# (VS 2013)
 
 | 
Verfasst: Sa 05.11.16 14:02 
 
Das Problem war, dass ich im PHP Script | vergessen habe. Die C# Applikation splittet die Serverantwort dann an dem |. Jetzt funktioniert aber wirklich alles  _________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
 | 
|  |