2017-02-28 3 views
0

Ich will Details in meiner database.I Verwendung von zwei Tabellencode folgt erhaltenLernen Sie eine Abfrage mit zwei Tabellen

$sqlall="SELECT 
     student_detail.reg_no 
     , student_detail.full_Name 
     , student_detail.year_of_study 
     , student_detail.faculty 
     , student_detail.course 
     ,student_hostel.reg_no 
     ,student_hostel.room_no 
     ,student_hostel.hostel_id 
    FROM student_detail,student_hostel 
    WHERE student_detail.reg_no = student_hostel.reg_no; "; 


//This is print part 
$result = $conn->query($sqlall); 

if ($result->num_rows > 0) { 
    // output data of each row 
    //create table 

    echo "<table class=\"table table-hover\"> 
     <tr> 
     <th>Reg. No.</th><th>Hostel id</th><th>Room No</th></tr>"; 
    while($row = $result->fetch_assoc()) { 

    echo"<tr id=\"".$row["student_detail.reg_no"]."\" onclick=\"Redirect(this.id)\"><td>".$row["student_detail.reg_no"]."</td><td>".$row["student_hostel.room_no"]."</td><td>".$row["student_hostel.room_no"]."</td></tr>"; 
    } 
    echo "</table>"; 
    } 
    else 
    { 
     echo "<table class=\"table table-hover\"> 
      <tr> 
      <th>Reg. No.</th><th>Hostel id</th><th>Room No</th></tr>; 
      <span id></span> 
      </table>"; 
    } 

nach Daten in Gang zu bringen, dann ist ein Fehler aufgetreten

Hinweis : Undefined index: student_detail.reg_no in C: \ xampp \ htdocs \ HMS \ HMS \ lib \ HOS_current.php auf 47 Linie

Wie kann ich es beheben?

+0

Sie müssen mehr schreiben, als daß dann –

+0

bitte echo nur die Zeile ohne die Tabellennamen 'echo $ row [ 'reg_no']; ' –

+0

bearbeiten Sie die Frage mit dem Code, wenn Sie die Abfrage ausführen und wie Sie es anzeigen –

Antwort

0

versuchen Sie dies:

$sqlall="SELECT student_detail.reg_no, student_detail.full_Name, student_detail.year_of_study, student_detail.faculty, student_detail.course,student_hostel.reg_no,student_hostel.room_no,student_hostel.hostel_id FROM student_detail INNER JOIN student_hostel ON student_detail.reg_no=student_hostel.reg_no; "; 
+1

** Try This ** hilft dem OP nicht wirklich zu verstehen, was er falsch gemacht hat –

1

Sie haben eine falsche Apostroph am Anfang für student_detail.reg_no Änderung es mit backtics

Sie haben eine falsche Apostroph am Anfang für student_detail. reg_no ändern Sie es mit einem Backtics
Ad die Bakctics sollte Tabelle und Spalte unverwechselbar Wrap und Sie haben Backtics um die Tow-Tabellen zu

$sqlall="SELECT 
      `student_detail`.`reg_no` 
      , `student_detail`.`full_Name` 
      , `student_detail`.`year_of_study` 
      , `student_detail`.`faculty` 
      , `student_detail`.`course` 
      ,`student_hostel`.`reg_no` 
      ,`student_hostel`.`room_no` 
      ,`student_hostel`.`hostel_id` 
     FROM student_detail,student_hostel 
     WHERE `student_detail`.`reg_no` = `student_hostel`.`reg_no`; "; 

oder aufgrund der Tatsache, dass Sie nicht Wort oder Raum reserviert haben, verwenden Sie nicht backics in diesem Fall

$sqlall="SELECT 
      student_detail.reg_no 
      , student_detail.full_Name 
      , student_detail.year_of_study 
      , student_detail.faculty 
      , student_detail.course 
      ,student_hostel.reg_no 
      ,student_hostel.room_no 
      ,student_hostel.hostel_id 
     FROM student_detail,student_hostel 
     WHERE student_detail.reg_no = student_hostel.reg_no; "; 

für den zweiten Fehler machen die FATC Sie sind while-Schleife die Abfrage bedeuten sollte Rück Reihen .. so könnte der Fehler auf den Spaltennamen in Beziehung gesetzt werden ... versuchen (für Test) einen Aliasnamen zB mit:

SELECT 
      student_detail.reg_no as no 
      ..... 

und auf diese Weise beziehen sich auf Sie Spalte in while-Schleife

echo"<tr id=\"".$row['no']."\" onclick=\"Redirect(this.id)\"><td>".$row['no']. 
     "</td><td></td><td></td></tr>"; 
+0

@JohnHC. Ich habe alraedy sehen .. ich habe update die Antwort .. trotzdem vielen Dank für den Vorschlag – scaisEdge

+0

Thnx bt es hat es nicht funktioniert –

+0

zeigen die genaue Fehlermeldung bitte – scaisEdge

1

Versuchen:

$sqlall= " 
SELECT student_detail.reg_no, 
     student_detail.full_Name, 
     student_detail.year_of_study, 
     student_detail.faculty, 
     student_detail.course, 
     student_hostel.reg_no, 
     student_hostel.room_no, 
     student_hostel.hostel_id 
FROM student_detail 
INNER JOIN student_hostel 
ON student_detail.reg_no = student_hostel.reg_no;"; 

Siehe ANSI JOIN-Syntax? Auch schlechte Backticks und Apostrophe in der ursprünglichen Code

Wenn Sie wirklich haben Backticks zu verwenden, verwenden sie um jede Entität:

`student_detail`.`reg_no` 
2

Ich würde vorschlagen, dass Sie verwenden SQL-Joins, SQL-Joins verwendet werden, Zeilen aus zwei oder mehr Tabellen zu kombinieren.

Dies ist, wie zu erreichen, was Sie wollen mit dort

verbindet
$sqlall = "SELECT DISTINCT student_detail.reg_no, student_detail.full_Name, student_detail.year_of_study, student_detail.faculty, student_detail.course,student_hostel.reg_no,student_hostel.room_no,student_hostel.hostel_id FROM student_detail inner join student_hostel on student_hostel.reg_no 
    = student_detail.reg_no"; 
$result = $conn->query($sqlall); 

if ($result->num_rows > 0) { 
    // output data of each row 
    //create table 

    echo "<table class=\"table table-hover\"> 
     <tr> 
     <th>Reg. No.</th><th>Hostel id</th><th>Room No</th></tr>"; 
    while($row = $result->fetch_assoc()) { 

    echo"<tr id=\"".$row["reg_no"]."\" onclick=\"Redirect(this.id)\"><td>".$row["reg_no"]."</td><td>".$row["room_no"]."</td><td>".$row["room_no"]."</td></tr>"; 
    } 
    echo "</table>"; 
    } 
    else 
    { 
     echo "<table class=\"table table-hover\"> 
      <tr> 
      <th>Reg. No.</th><th>Hostel id</th><th>Room No</th></tr>; 
      <span id></span> 
      </table>"; 
    } 
?> 

In der oben habe ich verwendet inner join

Die INNER JOIN Schlüsselwort wählt alle Zeilen aus beiden Tabellen, solange ist eine Übereinstimmung zwischen den Spalten in beiden Tabellen.

Die grundlegende Syntax für diese Verknüpfung ist:

SELECT column_name(s) 
FROM table1 
INNER JOIN table2 
ON table1.column_name=table2.column_name; 

oder

SELECT column_name(s) 
FROM table1 
JOIN table2 
ON table1.column_name=table2.column_name; 

NB: INNER JOIN die gleiche wie JOIN ist.

NB: Wenn Sie die Ergebnisse auszudrucken, nicht echo $row['tableName.ColumnName']; nur $row['ColumnName']; echo