0

I am new to php so please could someone take a look at this php code and explain/edit why the inner joins do not display the information required in query2.

<?php
{
    mysql_connect("localhost" , "" , "") or die (mysql_error());
    mysql_select_db("") or die(mysql_error());


    $pid=intval($_SESSION["Patient_id"]); $query = "SELECT Appointment_id, Doctor_id, Patient_id, Appointment_time, Appointment_date FROM Appointment where Patient_id=$pid";
    //executes query on the database
    $result = mysql_query ($query) or die ("didn't query");
    //this selects the results as rows

    $num = mysql_num_rows ($result);    
    //if there is only 1 result returned than the data is ok 
    if ($num == 1) {}
    {
        $row=mysql_fetch_array($result);
        $_SESSION['Appointment_date'] = $row['Appointment_date'];
        $_SESSION['Appointment_time'] = $row['Appointment_time'];

    }


   $query2 = "SELECT Doctor_id FROM Appointment INNER JOIN Doctor ON Appointment.Doctor_id=Doctor.Doctor_id";
    //executes query on the database
    $result = mysql_query ($query) or die ("didn't query");

    //this selects the results as rows
    $num = mysql_num_rows ($result);    
    //if there is only 1 result returned than the data is ok 
    if ($num == 1) {}


    {
        $row=mysql_fetch_array($result);
        $_SESSION['Doctor_id'] = $row['Doctor_id'];
        $_SESSION['Name'] = $row['Name'];
        $_SESSION['Room'] = $row['Room'];


    }


}
?>  

I am requesting Doctor_id, Name and Room from the Doctor table to display the information in the Appointment table

enter image description here

The tables are linked together. Doctor_id is the primary key in the Doctor table and the foreign key in the Appointment table.

enter image description here

I need to display the Name and Room in the Appointment table.

appointment.php code

<!DOCTYPE html>
<?php
session_start();
?>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="apple-mobile-web-app-status-bar-style" content="black" />
        <title>
        </title>
        <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
        <link rel="stylesheet" href="my.css" />
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
        </script>
        <script src="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.js">
        </script>
        <script src="my.js">
        </script>
        <!-- User-generated css -->
        <style>
        </style>
        <!-- User-generated js -->
        <script>
            try {

    $(function() {

    });

  } catch (error) {
    console.error("Your javascript has an error: " + error);
  }
        </script>
     </head>
    <body>
        <!-- Home -->
        <div data-role="page" id="page1">
            <div data-theme="a" data-role="header">
            <a data-role="button" data-theme="d" href="login.html" data-icon="arrow-l" data-iconpos="left" class="ui-btn-left">
                    Back
                </a>
                <a data-role="button" href="index.html" data-icon="home" data-iconpos="right" data-theme="d"class="ui-btn-right">
                 Home  
                </a>
                <h3>
                    Book appointment
                </h3>
           </div>

           <div data-role="content">
                <h3>
                    Select date/time:
                </h3>
                <br />
<?php
{
    mysql_connect("localhost" , "" , "") or die (mysql_error());
    mysql_select_db("") or die(mysql_error());


    $pid=intval($_SESSION["Patient_id"]); $query = "SELECT Appointment_id, Doctor_id, Patient_id, Appointment_time, Appointment_date FROM Appointment where Patient_id=$pid";

    //executes query on the database
    $result = mysql_query ($query) or die ("didn't query");
    //this selects the results as rows

    $num = mysql_num_rows ($result);    
    //if there is only 1 result returned than the data is ok 
    if ($num == 1) {}
    {
        $row=mysql_fetch_array($result);
        $_SESSION['Appointment_date'] = $row['Appointment_date'];
        $_SESSION['Appointment_time'] = $row['Appointment_time'];
    }
        $query2 = "SELECT t1.*, t2.Name, t2.Room FROM Appointment AS t1
        INNER JOIN Doctor AS t2
        ON t1.Doctor_id=t2.Doctor_id";
        //executes query on the database
        $result = mysql_query ($query) or die ("didn't query");

        //this selects the results as rows
        $num = mysql_num_rows ($result);    
        //if there is only 1 result returned than the data is ok 
        if ($num == 1) {
            $row = mysql_fetch_array($result, MYSQL_ASSOC);
            print_r($row);['Doctor_id'] = $row['Doctor_id'];
            print_r($row);['Name'] = $row['Name'];
            print_r($row);['Room'] = $row['Room'];
        } else {
          // we have more than one row
        }
}
?>  

        <strong>Dates available</strong>            
        <select id="Availability" name="Availability">                      
        <option value="0">--Select date--</option>
        <option value="1"><?php echo $_SESSION['Appointment_date'];?></option>
        </select>

        <br />
        <br />

        <strong>Times available</strong>            
        <select id="Availability" name="Availability">                      
        <option value="0">--Select time--</option>
        <option value="2"><?php echo $_SESSION['Appointment_time'];?></option>>
        </select>

        <br />
        <br />

            <strong>Doctor Name</strong>            
        <select id="Availability" name="Availability">                      
        <option value="0">--Name--</option>
        <option value="2"><?php echo $_SESSION['Name'];?></option>>
        </select>

        <br />
        <br />

            <strong>Doctor Room</strong>            
        <select id="Availability" name="Availability">                      
        <option value="0">--Room--</option>
        <option value="2"><?php echo $_SESSION['Room'];?></option>>
        </select>

        <br />
        <br />

                <label for="textarea1">
                Message GP
                </label>
                <textarea name="" id="textarea1" placeholder="">
                </textarea>


             </div>
        </div>
    </body>
</html>
4

2 回答 2

0
ERROR 1052 (23000): Column 'doctor_id' in field list is ambiguous.

Your query2 should say:

"SELECT Doctor.Doctor_id FROM Appointment INNER JOIN Doctor ON Appointment.Doctor_id=Doctor.Doctor_id";

or

"SELECT Appointment.Doctor_id FROM Appointment INNER JOIN Doctor ON Appointment.Doctor_id=Doctor.Doctor_id";

depending on what you want to query.

Best,

于 2013-03-31T22:07:26.127 回答
0

尝试这个:

$query2 = "SELECT t1.*, t2.Name, t2.Room FROM Appointment AS t1
INNER JOIN Doctor AS t2
ON t1.Doctor_id=t2.Doctor_id";
//executes query on the database
$result = mysql_query ($query) or die ("didn't query");

//this selects the results as rows
$num = mysql_num_rows ($result);    
//if there is only 1 result returned than the data is ok 
if ($num == 1) {
    $row = mysql_fetch_array($result, MYSQL_ASSOC);
    $_SESSION['Doctor_id'] = $row['Doctor_id'];
    $_SESSION['Name'] = $row['Name'];
    $_SESSION['Room'] = $row['Room'];
} else {
  // we have more than one row
}

我不明白当你不能使用 print_r 或 var_dump 时你如何编码......这是你应该用来调试的代码:

//this selects the results as rows
    $num = mysql_num_rows ($result);    
    //if there is only 1 result returned than the data is ok 
    if ($num == 1) {
        $row = mysql_fetch_array($result, MYSQL_ASSOC);
        print_r($row);
    } else {
      // we have more than one row
    }

如果您有一个带有键 ['Room'] 的 $row,则问题出在 PHP 中

于 2013-03-31T22:22:07.950 回答