بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
چگونه می توانیم یک کوئری با شرط داینامیک بنویسیم ؟
سلام بچه ها
من یک کوئری نوشتم که مقادیری رو از سرور select می کنه
select * from myTable where type=1 And type=38
مشکلی که دارم اینه که بسته به شرایط ممکنه تعداد And های کوئری متفاوت باشه
مثلا یه جا کوئری من باشه :
select * from myTable where type=1 And type=38 And type=24
توی یه شرایط دیگه به این صورت باشه :
select * from myTable where type=1 And type=38 And type=24 And type=3 And type=11 And type=29 And type=19 ...
چطور می تونم این قسمت And کوئری رو داینامیک کنم
مثلا بشه یه حلقه ی for نوشت توی کوئری و به تعدادی که می خوام And بزاره !
+1
0
سلام ، ساده است همونطور که خودتون گفتین داخل حلقه ی for دستور را قرار دهید و به جای مقادیر ثابت متغیر قرار دهید. (6 سال پیش)
0
0
آخه مشکل اینجاست که نمیدونم چند تا And بنویسم. تعداد And ها بسته به شرایط فرق می کنه.امیدوارم تونسته باشم منظورمو برسونم (6 سال پیش)
0
0
لطفاً بیشتر توضیح دهید. (6 سال پیش)
0
0
متن سوالم رو ویرایش کردم (6 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
مشاهده پاسخ صحیح
پاسخ به سوال
libcode
6 سال پیش
0
0
ساده ترین راه حل این هستش که اون مقادیری که فرق میکنند و باید اعداد خاصی کنار هم باشند رو در یک آرایه به یک اسم خاص قرار بدید و در هر قسمت که یک if قرار دادید بعدش باید مقادیر خاص در سر جای خود قرار بگیرند. مثلاً :
select * from myTable where type=1 And type=$types[0] And type=$types[1] And type=$types[2] And type=$types[3] And type=$types[4] And type=$types[5] .
اگر توضیح بدید برای چه کاری هست بیشتر میتونم کمکتون کنم.
پاسخ به سوال
Criss
6 سال پیش
+1
0
پاسخ صحیح
روی آرایه forEach بزنید یه String بسازید بعدش اون String رو توی دستور SQL استفاده کنید :
$sql='type=1 And type=38'
$sql='type=1 And type=38 And type=24'
$sql='type=1 And type=38 And type=24 And type=3 And type=11 And type=29 And type=19 ...'
select * from myTable where $sql
نمونه عملی :
if (is_numeric($word)) {
if (strlen($word) == 13) {
$sql = 'WHERE prson.code= :code';
$key = 'code';
} else {
$sql = 'WHERE manager.id = :id';
$key = 'id';
}
} else {
$sql = 'WHERE prson.desc LIKE :word';
$word = '%' . $word . '%';
$key = 'word';
}
$records = $db->query("SELECT *
FROM manager
LEFT OUTER JOIN prson
ON manager.prson_id=prson.id
LEFT OUTER JOIN store ON manager.room_id=room.id
$sql
AND manager.city_id=:city_id
AND manager.enable=TRUE
AND prson.enable=TRUE
ORDER BY manager.life > $toDay DESC , manager.available DESC , manager.id DESC "
, array(
$key => $word,
'city_id' => $city_id,
));
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .