2016-04-16 7 views
0

Im Versuch, um die Werte zu erhalten, wenn eine Person sucht ein Mitarbeiter ID aus dieser Eingabe von der HTML-Seite, um esWie html Eingabe in php sql

$name = $_GET["staffID"]; 
$sql = "SELECT orderID, orderDate, shippingDate, staffName FROM purchase 
WHERE staffID = ".$name." 
INNER JOIN staff ON purchase.staffID = 
staff.staffID ORDER BY orderDate"; 
$results = mysqli_query($conn, $sql) 
or die ('Problem with query' . mysqli_error()); 

Die Fehler alle verarbeiteten Käufe von diesem Mitarbeiter-ID zeigen Ich bekomme offensichtlich, wenn ich die WHERE-Anweisung einfüge, also weiß ich nicht, ob ich die WHERE-Anweisung richtig mache oder nicht.

Ohne wo Aussage zeigt es mir alle Käufe von allen Personal-IDs in der Tabelle, die

<html> 
</head> 
<body> 

<form id="staff" action="file.php" method="get"> 
<p>please fill in the following form</p> 
<p>Staff ID: <input type="text" name="staffID"/> 
</p> 

<p><input type="submit" value="Submit"> 
<input type="reset" value="Reset"></p> 
</form> 
</body> 
</html> 
+0

Tr Neuordnung 'WHERE' &' INNER JOIN' Klauseln; – itzmukeshy7

+0

@ itzmukeshy7 error error Warnung: mysqli_error() erwartet genau 1 Parameter, 0 in I gegeben: * Path * in Zeile 23 Problem mit Abfrage ....... Zeile 23 ist die letzte Zeile in diesem Code "oder sterben ('Problem mit Abfrage'. Mysqli_error()); " – Senbon

+0

'oder sterben ('Problem mit Abfrage'. Mysqli_error ($ conn));' bedeutet übergeben '$ conn' Variable zu 'mysqli_error()'; dann teile den Fehler; – itzmukeshy7

Antwort

0

Das Problem richtig ist, dass Sie nicht Trennzeichen um den Namen Variable gesetzt haben:

$sql = "SELECT orderID, orderDate, shippingDate, staffName FROM purchase 
INNER JOIN staff ON purchase.staffID = 
staff.staffID ORDER BY orderDate 
WHERE staffID = '".$name."' "; 
+0

versucht, dass immer noch der gleiche Fehler – Senbon

+0

Was ist der genaue Fehler? –

+0

Ich habe meine Antwort aktualisiert - bitte versuchen Sie die Abfrage mit der WHERE-Klausel neu geordnet, wie Itzmukeshy7 Vorschlag –

1

Try this;)

$name = isset($_GET['staffID'])?$_GET['staffID']:''; 
if(!empty($name) && $stmt = $conn->prepare('SELECT orderID, orderDate, shippingDate, staffName FROM purchase INNER JOIN staff ON purchase.staffID = staff.staffID WHERE staffID = ? ORDER BY orderDate')){ 
    /** 
    * Here 1st parameter is data type of field s for string and i for integer; 
    * @todo update "s" as per data type of staffID field; 
    */ 
    $stmt->bind_param("s", $name); 

    /* execute query */ 
    $stmt->execute(); 

    /* Get result: */ 
    $result = $stmt->get_result(); 

    /* now you can fetch the results into an array - NICE */ 
    while($row = $result->fetch_assoc()){ 
    /** 
    * @todo use $row as per your requirement; 
    */ 
    } 

    /* close statement */ 
    $stmt->close(); 
} 

/* optional close connection */ 
$conn->close(); 

Prevent SQL Injection auch; und auch auf den Leerwert von $_GET['staffID'] prüfen;