PDA

View Full Version : نحوه قرار دادن خروجی Select در متغیر



بیتا حکمت
جمعه 28 آذر 1393, 00:21 صبح
http://upload7.ir/imgs/2014-12/27602801642546219813.jpg (http://upload7.ir/)
اگر کوئری به این صورت باشه


SELECT ID ,family from tbl_name where status=1 ORDER BY id DESC Limit 1


چطوری ID رو در متغیر ID$ و فامیلی رو در متغیر fmaily$ قرار بدم

یه سوال دیگه هم دارم اینکه ، اگر ما جای Select علامت * می گذاشتم و خروجی کاملا شبیه جدول بالا بود و میخواستیم مقدار ستون سوم از سطر دوم رو بدست بیاریم (یعنی احمدی )-- باید چی کار می کردیم ؟

amir6268
جمعه 28 آذر 1393, 00:53 صبح
سوال اولتو نفهمیدم ! دقیقا میخوای چیکار کنی؟!

ولی سوال دومت :


SELECT * FROM tbl_name WHERE status='1' AND id='2'


داخل echo هم family رو دریافت میکنیم که خروجیش میشه ahmadi ...

بیتا حکمت
جمعه 28 آذر 1393, 01:46 صبح
سوال اولتو نفهمیدم ! دقیقا میخوای چیکار کنی؟!

ولی سوال دومت :


SELECT * FROM tbl_name WHERE status='1' AND id='2'


داخل echo هم family رو دریافت میکنیم که خروجیش میشه ahmadi ...

شما سوال منو متوجه نشدین ، منظورم این بود که فقط خروجی Select هم نام و هم فامیلی است (یعنی بیشتر از یک فیلد برگشت داده میشه ) چطوری باید اینا رو تو متغییرها قرار بدیم .
سوال دوم هم متوجه نشدین من منظورم این بود که با سطر و ستون به خروجی کوئری اشاره کنیم

دستوری که از نتیجه کوئری سطر دوم و ستون سوم رو نشون بده ..

hamedarian2009
جمعه 28 آذر 1393, 11:35 صبح
شما کدتون را کامل نزاشتین من نمیدونم با چه روشی با دیتابیس کار می کنید اما در کل بعد اجرای کوپری کافیه مقادیر رو فچ کنید که حاصل یک آرایه هست و میتونید هر عنصر آرایه رو توی متغیر دلخواهتون قراربدین مثلا:


$sql = "SELECT ID ,family from tbl_name where status='1' ORDER BY id DESC Limit 1";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$id = $row['ID'];
$fmaily = $row['family'];

بیتا حکمت
جمعه 28 آذر 1393, 17:31 عصر
شما کدتون را کامل نزاشتین من نمیدونم با چه روشی با دیتابیس کار می کنید اما در کل بعد اجرای کوپری کافیه مقادیر رو فچ کنید که حاصل یک آرایه هست و میتونید هر عنصر آرایه رو توی متغیر دلخواهتون قراربدین مثلا:


$sql = "SELECT ID ,family from tbl_name where status='1' ORDER BY id DESC Limit 1";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$id = $row['ID'];
$fmaily = $row['family'];


ممنون حل شد ، مشکل من این بود که کنار fmaily فاصله می زاشتم یعنی ایجور :


$fmaily = $row[' family'];


ممنون میشم سوال دوم هم جواب بدین ، اگر بخوایم به سطر و ستون به حاصل کوئری دسترسی داشته باشیم چی کار می کنیم.

بیتا حکمت
جمعه 28 آذر 1393, 17:40 عصر
راستی تو آپدیتش هم به مشکل برخوردم بعد که id رو بدست میارم ، هیچ کدوم از این دستورا جواب نمی ده یا عمل نمی کنه



$sql = "UPDATE MYTABLE SET status=1 WHERE id='$ID'"

$sql = "UPDATE MYTABLE SET status=1 WHERE id=".$id

$sql = "UPDATE MYTABLE SET status='1' WHERE id='$ID'"

$sql = "UPDATE MYTABLE SET status='1' WHERE id='$ID'". settype($num, "integer");

amir6268
شنبه 29 آذر 1393, 00:42 صبح
$sql = "UPDATE MYTABLE SET status='1' WHERE ID='$id' "

hamedarian2009
شنبه 29 آذر 1393, 09:15 صبح
ممنون میشم سوال دوم هم جواب بدین ، اگر بخوایم به سطر و ستون به حاصل کوئری دسترسی داشته باشیم چی کار می کنیم.

اگه * هم بزارین فرقی نمیکنه علامت * همه ستون های جدول رو انتخاب میکنه و نیازی به نوشتن نام اونها نیست بازهم خروجی یک آرایه هست که مثل روشی که گفتم میتونید به عناصر آرایه دسترسی داشته باشین

راستی تو آپدیتش هم به مشکل برخوردم بعد که id رو بدست میارم ، هیچ کدوم از این دستورا جواب نمی ده یا عمل نمی کنه
کد درست اینه
$sql = "UPDATE MYTABLE SET status='1' WHERE id='$ID'"


بهتره این دستور رو به این صورت بنویسین تا اگه خطایی داشت بهتون بگه

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

MMSHFE
شنبه 29 آذر 1393, 13:22 عصر
بهتره عادت کنید دستورات SQL رو با ساختار استاندارد بنویسید:

$sql = "UPDATE `mytable` SET `status`='1' WHERE (`id`='{$ID}');";

hamedarian2009
شنبه 29 آذر 1393, 14:49 عصر
بهتره عادت کنید دستورات SQL رو با ساختار استاندارد بنویسید:

$sql = "UPDATE `mytable` SET `status`='1' WHERE (`id`='{$ID}');";

البته استاد درست میفرمایند اما یه سمی کولون اضافه هست اینجوری اصلاح کنید

$sql = "UPDATE `mytable` SET `status`='1' WHERE (`id`='{$ID}')";

beh3000
شنبه 29 آذر 1393, 17:19 عصر
اون سمی کلن اضافه نیست ... استانداردش همینه

MMSHFE
شنبه 29 آذر 1393, 18:00 عصر
بله سمی کالن اضافه نیست. یک کوئری استاندارد با ; تموم میشه.

hamedarian2009
شنبه 29 آذر 1393, 18:02 عصر
اون سمی کلن اضافه نیست ... استانداردش همینه
اگه سندی دارین که میگه استاندارد کدومه یادر یک منبع آموزشی اینجوری استفاده کرده لطفا بزارین

MMSHFE
شنبه 29 آذر 1393, 19:15 عصر
فکر میکنم همین تالار دیگه بعنوان یه سند قابل مطرح شدن باشه و در کل نمیدونم چرا ما عادت داریم هر چیزی مطابق روش کاری خودمون نبود، فوری بگیم سند حرفت کو. در کل این حرف رو اخیراً خیلی تو تالار میشنوم و بنظرم زیاد جالب نیست ولی بهرحال اگه خواستین، توی اینترنت درمورد how to write a standard SQL query تحقیق کنید. مثالهای سایت mysql.com رو هم بررسی کنید. توی کنسول mysql هم تا وقتی ; انتهای کوئری رو نگذارین، کوئری اجرا نمیشه. ساختار کوئریهای phpmyadmin رو هم چک کنید.

hamedarian2009
شنبه 29 آذر 1393, 19:51 عصر
فکر میکنم همین تالار دیگه بعنوان یه سند قابل مطرح شدن باشه و در کل نمیدونم چرا ما عادت داریم هر چیزی مطابق روش کاری خودمون نبود، فوری بگیم سند حرفت کو. در کل این حرف رو اخیراً خیلی تو تالار میشنوم و بنظرم زیاد جالب نیست ولی بهرحال اگه خواستین، توی اینترنت درمورد how to write a standard SQL query تحقیق کنید. مثالهای سایت mysql.com رو هم بررسی کنید. توی کنسول mysql هم تا وقتی ; انتهای کوئری رو نگذارین، کوئری اجرا نمیشه. ساختار کوئریهای phpmyadmin رو هم چک کنید.

مرسی من قصدم این نبود که بگم این حرف غلطه یا درست بلکه تا حالا توی هیچ منبع آموزشی php ندیدم حتی وبسایت php.net اینکارو نکردن
توی کنسول خب باید آخر دستور سمی کولون بزاریم تا متوجه بشه پایان دستوره اما توی همون phpmyadmin تب sql بازهم اختیاری هست
هدف فقط این بود ببینیم کدومشون استاندارده

Mohammadsgh
شنبه 29 آذر 1393, 20:00 عصر
اگه سندی دارین که میگه استاندارد کدومه یادر یک منبع آموزشی اینجوری استفاده کرده لطفا بزارین
شما از کدهای آقای شهرکی نمیتونید ایراد بگیریدو کد نویسیشون ایرادی نداره و نیازی به منبع نیست

H:Shojaei
شنبه 29 آذر 1393, 20:49 عصر
اگه سندی دارین که میگه استاندارد کدومه یادر یک منبع آموزشی اینجوری استفاده کرده لطفا بزارین
سند این که شما اگر 2 کوئری بخواید با یک دستور اجرا کنید هیچ کدوم اجرا نمیشن تا وقتی سمی کالن رو اضافه کنید!! میتونید تست کنید...
دلیل این هم که یک خط سمی کالن نمیخواد رو من هم نمیدونم ولی تو تقریبا اکثر زبان ها (نمونه همین php خودمون) خط آخر سمی کالن هم نداشت نداشت ولی فقط خط آخر وقتی هم که یک خط باشه مثلا کوئری ها که معمولا همینطوریه همون یک خط ، خط آخره دیگه...

شما از کدهای آقای شهرکی نمیتونید ایراد بگیریدو کد نویسیشون ایرادی نداره و نیازی به منبع نیست
فکر نمیکنید تاپیکتون اسپم شد!

hamedarian2009
شنبه 29 آذر 1393, 21:38 عصر
سند این که شما اگر 2 کوئری بخواید با یک دستور اجرا کنید هیچ کدوم اجرا نمیشن تا وقتی سمی کالن رو اضافه کنید!! میتونید تست کنید...
اگر چندتا کوئری باهم قراره اجرا بشه مشخصه باید آخر هر کوئری سمی کولون گزاشته بشه اما فکر میکنم دلیلش رو پیدا کردم این یه تکه مطلب از سایت w3schools.com هست


Semicolon after SQL Statements? Some database systems require a semicolon at the end of each SQL statement.
Semicolon is the standard way to separate each SQL statement in database systems that allow more than one SQL statement to be executed in the same call to the server.







اینجا نوشته بعضی از سیستم های دیتابیس باید حتما (کلمه require استفاده کرده یعنی الزام آور است)انتهای هر عبارت SQL سمی کولون بگزاری که احتمالا برای MySQL اختیاری هست پس نتیجه می گیریم استاندارد همون گزاشتن سمی کولون انتهای کوئری هست

MMSHFE
یک شنبه 30 آذر 1393, 08:03 صبح
مطمئناً قصد شما اطلاع از استانداردها برای کدنویسی اصولی بوده و هیچ کسی کامل نیست و کدهای من هم خالی از اشکال نیست و قطعاً از انتقادهای بجا استقبال میکنم. صحبت من درمورد سند خواستن هم فقط درمورد پست شما نبود و کلی گفتم چون منبع خیلیها برای ارجاع، سایت برنامه نویسه و اونوقت میبینم برخی از اعضای خود این سایت دنبال منبع دیگه هستن. بهرحال اگه سوء تفاهم یا ناراحتی پیش اومده عذر میخوام. درمورد ساختار استاندارد هم باید بگم ; اجباری نیست اگه فقط یک کوئری داشته باشین ولی برای اجرای چند کوئری لازمه. بهرحال یک کارکتر زحمتی توی تایپ نداره و بهتره به بودنش عادت کنیم.

بیتا حکمت
یک شنبه 30 آذر 1393, 18:51 عصر
بابت کمک هاتون ممنونم ، اما اینکه چطوری به صورت سطر و ستون به خروجی کوئری دسترسی داشته باشیم بی جواب موند آ
مثلا" گفتیم همه اسامی رو به ما نشون بده و خروجی کوئری مث همین پایینی شده ، اگر بخوام بدون شرط بگم که از سطر دوم ستون سوم رو نشون بده ، باید چی کار کنم ؟

http://upload7.ir/imgs/2014-12/27602801642546219813.jpg (http://upload7.ir/)

H:Shojaei
یک شنبه 30 آذر 1393, 18:58 عصر
وقتی یه آرایه برگردونده میشه (یا همون جدول) شما باید اون رو پیمایش کنید تا به همه مقادیرش دسترسی داشته باشید...
و اگر میخواید همیشه به همون سطر دوم و ستون سوم رو نشون بده:

echo $result[1]['family']
یا:

echo $result[1][2]

MMSHFE
دوشنبه 01 دی 1393, 09:07 صبح
$result = mysql_query("select * from `table`;");
$item = mysql_result($result, 1, 2); // $item now contains the 3rd (index #2) value of 2nd (index #1) row