mysql 从两个表中获取对象

mysql fetch object from two tables

帮我解决这个小问题,我有两个 tables,出租车和旅馆 具有相同的列名 "pangkalan1",我想创建一些过滤器,当我 运行 这个查询“SELECT * 从出租车,酒店 WHERE taxi.pangkalan1 = hotel.pangkalan1 AND taxi.pangkalan1 IN ('A','A');" 结果是有 pangkalan1=A 并且有效的出租车或酒店列表,直到我与 [=29] 中的获取对象混淆=]

有人可以帮我吗?

这是我的代码

    <?php
function datarelasi(){
$ambil = mysql_query("SELECT * 
FROM taxi,hotel 
WHERE taxi.pangkalan1 = hotel.pangkalan1
AND taxi.pangkalan1 IN ('A','A');");
While ($row=mysql_fetch_object($ambil)) {
$nama    = stripslashes($row->taxi->nama);
Echo $nama;
}
}
echo datarelasi();
?>

结果是

Notice: Undefined property: stdClass::$taxi in C:\xampp\htdocs\dss\inc\relasi.php on line 21

Notice: Trying to get property of non-object in C:\xampp\htdocs\dss\inc\relasi.php on line 21

,我只想从 table、taxi->name 或 hotel->name,

获取单个对象

谢谢

You should not be using the mysql_ extension. Please look at MYSQLI_ or PDO as the modern alternative. If you continue to use the MYSQL_* extension sometime soon when you want to upgrade your version of PHP, that extension will no longer work

如果您不确定从 mysql_fetch_object() 调用返回的是什么,那么只需使用 print_r() 转储它,但通常您应该为每个调用返回一个 class 属性您在查询中 select 列。

您也不需要 IN('A','A'),因为您实际需要编码的是 taxi.pangkalan1 ='A'

<?php
   function datarelasi() {
      $ambil = mysql_query("SELECT * 
                            FROM taxi,hotel 
                            WHERE taxi.pangkalan1 = hotel.pangkalan1
                              AND taxi.pangkalan1 ='A'");

      While ($row=mysql_fetch_object($ambil)) {
         // dump whats returned when you are not sure
         // print_r($row);

          $nama    = stripslashes($row->nama);
          Echo $nama;
      }

   }
   // call the function
   datarelasi();
?>