PHP MySQL-Abfrage mit zwei Werten?
Hallo zusammen. Ich habe vorlaufend ein Login-Skript, was mir auf der "internen" Seite dann den Nutzernamen mit
$user = check_user();
Hallo <?php echo htmlentities($user['vorname']);
ausgibt, was auch funktioniert.
Jetzt möchte ich allerdings mit dem Nutzernamen weiterarbeiten und habe eine Abfrage, welche aus einem anderen Tabellenblatt der SQL den Match mit dem Vornamen suchen und den folgenden Wert dann natürlich ausgeben soll.
Aber irgendwie bin ich auf dem Holzweg, weil das nicht hinhaut.
Ich würde mich total über eine Hilfestellung freuen.
Danke.
Warning: Array to string conversion in
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT versendet FROM obwacht WHERE ersteller like '$user'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while ($row = $result->fetch_assoc()) {
echo "Versendet: " . $row["versendet"]. " - Name: " . $row["ersteller"]. "<br>";
}
}
else {
echo "0 results";
}
$conn->close();
?>
4 Antworten
Du fragst mit
SELECT versendet FROM obwacht WHERE ersteller like '$user'
nur das Feld `versendet` ab, willst aber mit
"Versendet: " . $row["versendet"]. " - Name: " . $row["ersteller"]. "
das Feld `versendet`und das Feld `ersteller`ausgeben. Das kann nicht funktionieren. Ändere die Abfrage zu
SELECT versendet, ersteller FROM obwacht WHERE ersteller like '$user'
Alex
das also quasi in die abfrage 'vorname' noch irgendwie dazu muss?
So wie Du es geschrieben hast, wird die Tabelle `obwacht` nach allen Datensätzen durchsucht, die im Feld `ersteller` den Wert $user stehen haben. Und zurückgegeben wird aus den gefundenden Datensätzen der Wert des Feldes `versendet`.
Was konkret willst Du stattdessen?
genau das ist richtig, aber die $user enthält ja vor und Nachname, deswegen ja 'Vorname' als egal wie ich es drehe kommt die oben gezeigt Fehlermeldung und die werte sind in der db vorhanden :(
aber die $user enthält ja vor und Nachname,
Werde doch endlich mal konkret. Was soll ich mit der Aussage anfangen? Wonach soll die Tabelle durchsucht werden? In welcher Spalte der Tabelle soll gesucht werden? Welcher Wert soll gesucht werden?
Du fragst ja nur 1 Parameter ab, willst aber 2 Ergebnisse ausgeben.
SELECT versendet FROM
Ändere das auf
SELECT versendet, ersteller FROM
Dann klappts auch mit der Ausgabe :)
Danke für die schnelle Antwort, aber leider bleibst gleich, ich dachte es liegt vlt. an dem $user, weil ich ja bei der 1. ausgabe nur den Vornamen anzeigen lasse und diesen auch in dem anderen Tabellenblatt nur habe. das also quasi in die abfrage 'vorname' noch irgendwie dazu muss?
Verstehe. Na dann schreib doch mal welche Tabellen du hast und welche Spalten es dort gibt. Dann kann man dir auch besser helfen :)
Sorry, gern. also die $user check wird abgefragt aus der Tabelle User, dort gibt es von links nach recht, id, email, Passwort, Vorname, Nachname, created_at updated_at, Passwortcode, passwortcode_time // der gewollte Datensatz der dann über den uservornamen ausgegeben werden soll steht in Tabelle Obacht mit den spalten id, Ersteller, versendet, aufgaben, created_at
Dann benötigst du den mysql Befehl JOIN.
Damit kannst du Abfragen über mehrere Tabellen machen, sofern es eine Spalte gibt, die beide Tabellen quasi verbinden. Wie zB "id"
die lösung war:
$user1 = ($user['vorname']);
$sql = "SELECT versendet, ersteller FROM obwacht WHERE erstellr like '$user1'";
Danke für die Hilfe
Ja, das hab ich dir ja auch geschrieben... also ist die Quelle dieser Antwort wohl kaum die eigene Erfahrung. Lol
Danke für die schnelle Antwort, aber leider bleibst gleich, ich dachte es liegt vlt. an dem $user, weil ich ja bei der 1. ausgabe nur den Vornamen anzeigen lasse und diesen auch in dem anderen Tabellenblatt nur habe. das also quasi in die abfrage 'vorname' noch irgendwie dazu muss?