2016-04-23 5 views
0

Ich bin sehr neu zu PHP und würde gerne wissen, wenn meine Where-Klausel korrekt ist, denke ich, dass ich etwas in meiner Where-Klausel fehlt. siehe unten:Anfänger bei PHP - Where-Klausel

<?php 
$val1 = $_SESSION['dbase_user']['id']; 

$gen = "SELECT gender FROM tbl_users WHERE id = $val1"; 
$result1 = dbQuery($gen); 
$row1 = dbFetchAssoc($result1); 
?> 

<tr> 
<td width="180" height="30" class="label"><strong>Gender</strong></td> 
<td height="30" class="content"> 
<input type="text" class="frmInputs" size="10" value="<?php echo strtoupper($row1['gender']) ?>" disabled="disabled"/></td> 
</tr> 

Die Ausgabe: Es erhält immer das erste Geschlecht der ersten Zeile in der Datenbank.

Die Frage: Ich wollte, dass es auf andere Datensätze basierend auf meiner WHERE-Klausel zeigt.

Notes und versucht Szenario:

  1. Id ist der Primärschlüssel in meiner DB < --- ID int ist
  2. Ich habe auch versucht WHERE fname = $val1 < mit - dies ist ein String

Vielen vielen Dank!

+0

Da Sie anfangen, sollten Sie jetzt richtige Gewohnheiten lernen, anstatt die alte Art zu lernen und sie zu verlernen. Lesen Sie also über vorbereitete Abfragen mit mysqli oder PDO, anstatt Variablen in Abfragen zu ersetzen. – Barmar

+0

Aber abgesehen davon, sehe ich kein Problem mit Ihrer WHERE-Klausel, die dazu führen würde, dass es die falsche Zeile zurückgibt. Es sollte das Geschlecht des Benutzers mit der angegebenen ID zurückgeben. – Barmar

+0

Für die Zeichenfolge müssen Sie in Anführungszeichen setzen: 'WHERE fname = '$ val1''. – Barmar

Antwort

1

Ihr Code sollte korrekt funktionieren, wenn eine Nummer ist.

Wenn es sich um eine Zeichenfolge handelt, müssen Sie sie in SQL in Anführungszeichen setzen.

$gen = "SELECT gender FROM tbl_users WHERE fname = '$val1'"; 

Aber es wäre am besten, wenn Sie einen Datenbank-API verwenden, die vorbereiteten Abfragen unterstützt, entweder MySQLi oder PDO. Dann musst du dir darüber keine Sorgen machen.