-1

URL:

empdetail.php?id=1

MySQL データベースに 2 つのテーブルがあります。2 つのテーブルをマージしたいのですが、完了したと思います。$_GET['id']またはその他のコードに問題がある可能性があります。をクリックするempdetail.php?id=1と、結果が完全に表示されます。empdetail.php?id=2またはその他をクリックempdetail.php?id=3しても、結果が表示されません。なぜ結果が表示されないのかわかりません。

   <?
    //////Displaying Data/////////////

       //connect to database

         mysql_connect('localhost','root','');
         mysql_select_db('cdcol');

    $id=$_GET['id']; // Collecting data from query string
    if(!is_numeric($id)){ // Checking data it is a number or not
        echo "Data Error"; 
        exit;
    }

    $result = mysql_query("SET NAMES utf8"); //the main trick

    $query = "SELECT ospos_employees.person_id, ospos_people.first_name ".
     "FROM ospos_employees, ospos_people ".
        "WHERE ospos_employees.person_id = ospos_people.person_id='$id'";

    $result = mysql_query($query) or die(mysql_error());


    // Print out the contents of each row into a table 
    while($row = mysql_fetch_array($result)){
        echo $row['person_id']. " - ". $row['first_name'];
        echo "<br />";
    }




    ?>
4

3 に答える 3

1
$query = "SELECT ospos_employees.person_id, ospos_people.first_name ".
     "FROM ospos_employees, ospos_people ".
        "WHERE ospos_employees.person_id = ospos_people.person_id AND ospos_people.person_id =".$id;

質問が1つあります。クエリが2つのテーブルから選択される理由です。どうですか

 $query = "SELECT ospos_people.person_id, ospos_people.first_name ".
         "FROM  ospos_people ".
            "WHERE  ospos_people.person_id =".$id;
于 2013-03-19T16:11:02.377 に答える
0

これが私の完全な答えです:

 <?
    //////Displaying Data/////////////

       //connect to database

         mysql_connect('localhost','root','');
         mysql_select_db('cdcol');

    $id=$_GET['id']; // Collecting data from query string
    if(!is_numeric($id)){ // Checking data it is a number or not
    echo "Data Error"; 
    exit;
    }

    $result = mysql_query("SET NAMES utf8"); //the main trick

    $query = "SELECT ospos_employees.person_id, ospos_people.first_name 
             FROM ospos_employees
             inner join ospos_people on(ospos_employees.person_id = ospos_people.person_id)
             where ospos_employees.person_id = $id";

    $result = mysql_query($query) or die(mysql_error());


    // Print out the contents of each row into a table 
    while($row = mysql_fetch_array($result)){
        echo $row['person_id']. " - ". $row['first_name'];
        echo "<br />";
    }




    ?>

基本的にあなたのクエリは間違っていました。これが役に立てば幸いです。

サルドス ;)

于 2013-03-19T16:34:04.990 に答える
0

まず、SQL ステートメントが間違っています。まっすぐな SQL への変換:

SELECT 
    ospos_employees.person_id, ospos_people.first_name
FROM
    ospos_employees, ospos_people
WHERE 
    ospos_employees.person_id = ospos_people.person_id= '$id'

あなたのWHERE発言が間違っていることがわかります。修正する必要があります。また:

ospos_employees.person_id = '$id'

また

ospos_people.person_id= '$id'

または(意図した場合):

ospos_employees.person_id = '$id' AND ospos_people.person_id= '$id'
                                  ^^^

また、SQL 内の (int) 値は、その周りの目盛りを必要としないことに注意してください。

注意: MySQL_* 関数は PHP 5.5 で廃止されたため、使用しないでください。代わりに MySQLi_* または PDO を使用してください。

于 2013-03-19T16:15:18.720 に答える