帮我解决这个小问题,我有两张桌子,出租车和酒店 它有相同的列名“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中获取单个对象,
感谢
答案 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();
?>