PDA

View Full Version : سوال در مورد fetch کردن فیلد از جدول



neda_f
چهارشنبه 21 تیر 1391, 23:55 عصر
سلام بچه ها من یه سوال در مورد fetch کردن داده ها از دیتا بیس دارم ، لطفا اگه کسی می دونه منو راهنمای کنه
من بین دو تا جدول join زدم چند تا فیلدو اانتخاب کردم و از دستور mqsql_fetch_assoc استفاده کردم برای اینکه فیلد ها رو با اسم بذارم به جای اینکه شماره فیلد انتخاب شده رو بذارم اما وقتی اسم فیلدای join شده رو با assoc می ذارم error میده مثلا اینجوری :
$result=mysql_query($sql, $conn);
$row= mysql_fetch_assoc($result;)
$row[table1.id]

یعنی وقتی اسم فیلدو با این روش می ذارم چون join زدم و بین اسم جدول و اسم فیلد نقطه هست دیگه error می ده در این صورت باید چیکار کنم و از چه روشی استفاده کنم
من تازه php رو شروع کردم و زیاد وارد نیستم اگه کسی می دونه لطفا توضیح بده

lady64
پنج شنبه 22 تیر 1391, 08:11 صبح
نیازی نیست برای فراخوانی اینطور بنویسید :


$row[tabel1.id]

اینطور بنویسید :


$row['id']

چون معمولا ما فیلدهایی با نام یکسان در جداول مختلف استفاده نمیکنیم ، این مشکلی ایجاد نمیکنه و تشخیص میده .
موفق باشی

neda_f
پنج شنبه 22 تیر 1391, 19:00 عصر
من دو تا جدول دارم که هر دوتاش فیلد id داره ،خوب پس اینجوری از کجا می فهمه id مربوط به کدوم جدولو می خوام ؟

lady64
جمعه 23 تیر 1391, 08:45 صبح
مثلا تو این کد :


$query = "select * from tb4 join tb3 on tb4.id=tb3.id ";

که هر دو شون هم id دارن ، وقتی بنویسید $row['id'] از tb3 درنظر میگیره . چون tb3 والد هست .

neda_f
جمعه 23 تیر 1391, 11:54 صبح
"select
afrad_tour_tb.id,
afrad_tour_tb.id_tour,
sale_tb.id,
sale_tb.id_tour,
sale_tb.id_sabtekargozar
from afrad_tour_tb left join sale_tb
on afrad_tour_tb.id=sale_tb.id_sabtekargozar
where afrad_tour_tb.id_tour='$id_tour
"
الان این selectو ببینین هر کدوم یه آی دی دارن که مقدار ها شون یکی نیست و مقدار آی دی جدول اولی تو فیلد id_sabtekargozar جدول دومی قرار داره حالا باید چه جوری فیلد آی دی رو انتخاب کنم؟

lady64
جمعه 23 تیر 1391, 18:33 عصر
متوجه منظورت شدم ندا جان . شما دو فیلد همنام در دو جدول داری. بهترین روش اینه که به فیلدهات یک اسم نسبت بدید.این مثال رو ببینید . با کلمه ی کلیدی as یک اسم دیگه به فیلدها میشه نسبت داد:


$query = "select tb3.id,tb3.fname as name3,tb4.fname as name4 from tb3 join tb4 on tb4.id=tb3.id ";
$result = mysql_query($query)
$row = mysql_fetch_array($result

فیلد fname در هر دو جدول وجود داره . حالا برای دسترسی اینکار رو میکنیم :


$row ['name3']
$row ['name4']

neda_f
شنبه 24 تیر 1391, 00:03 صبح
متوجه منظورت شدم ندا جان . شما دو فیلد همنام در دو جدول داری. بهترین روش اینه که به فیلدهات یک اسم نسبت بدید.این مثال رو ببینید . با کلمه ی کلیدی as یک اسم دیگه به فیلدها میشه نسبت داد:


$query = "select tb3.id,tb3.fname as name3,tb4.fname as name4 from tb3 join tb4 on tb4.id=tb3.id ";
$result = mysql_query($query)
$row = mysql_fetch_array($result

فیلد fname در هر دو جدول وجود داره . حالا برای دسترسی اینکار رو میکنیم :


$row ['name3']
$row ['name4']

آهااااااااااان..!!!!!! مرسی فهمیدم فقط من الان خیلی ناراحتم که چرا این روش زود تر از این، این راه حل به فکر خودم نرسیده بود .... کلی ذهنمو درگیر کرده بود