mysql从两个表中获取对象

时间:2015-04-07 15:45:53

标签: php mysql fetch

帮我解决这个小问题,我有两张桌子,出租车和酒店 它有相同的列名“pangkalan1”,我想创建一些过滤器,当我运行此查询“SELECT * 从出租车,酒店 在哪里taxi.pangkalan1 = hotel.pangkalan1 和taxi.pangkalan1 IN('A','A');“结果是有pangkalan1 = A的出租车或酒店列表,并且有效,直到我与我的sql中的fetch对象混淆

任何人都可以帮助我吗?

这是我的代码

    <?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-&gt; name或hotel-&gt; name中获取单个对象,

感谢

1 个答案:

答案 0 :(得分:0)

  

您不应该使用 mysql _ 扩展名。请将MYSQLI_或PDO视为现代替代方案。如果您想要升级PHP版本,很快就会继续使用MYSQL_ *扩展,那么该扩展将不再有效

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

您也不需要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();
?>