PDA

View Full Version : سوال: راهی برای سرچ در متن در ()mysql_query



bcloob
یک شنبه 30 آذر 1393, 18:19 عصر
با سلام خدمت تمام اساتید
در پیدا کردن مقادیر یکسان که بین علامت ',' در یک فیلد دیتابیس ذخیره شده با مقدار مشابه اون در یک متغیر مشکل دارم.
مثال:

<?php
$categuri = 'cat1,cat2,cat3';
$result = mysql_query("select * from categuri where cat='?? ):'");
// cat مقدار داخل فیلد 'cat2,cat4,cat7'
?>
الان بین مقدار داخل دیتابس و متغیر $categuri عبارت cat2 مشترکه، می خوام بدونم دستور یا راه حلی وجود داره که من با استفاده از اون این مقدار ثابت را مشخص کنم و توی نتایج mysql_query() بیارم؟
با تشکر و سپاس

H:Shojaei
یک شنبه 30 آذر 1393, 18:40 عصر
منظورتون مبهمه...
ولی اگر منظورتون اینه که مثلا کلماتی که شبیه به کلمه $category هستند تو فیلد cat رو میخواید پیدا کنید باید:
select * from categuri where cat like %$category%
این کد رکورد هایی که توش مثل $category داشته باشه رو برمیگردونه...

H:Shojaei
یک شنبه 30 آذر 1393, 19:04 عصر
آهان شما میخواید اگر هرکدوم از کلمات اون رشته تو دیتابیس بود اون رکورد رو برگردونید فکر کنم واسه این کار:
اگه اون رشته رو خودتون میسازید کاراکتر جدا کننده , رو به | تغییر بدید که مقدار متغیر میشه:
$category='cat1|cat2|cat3'
اگر هم خودتون نمیسازیدش با explode و بعد implode به اون شکل بالا درش بیارید.
و بعد این کوئری رو جایگزین کنید:

select * from category where cat REGEXP '$category';

و البته category=categori

MMSHFE
دوشنبه 01 دی 1393, 10:59 صبح
اگه توی یک فیلد، چند مقدار رو نوشتین و با کاما از هم جدا کردین، میتونید دنبال یک مقدار خاص داخلش با دستور FIND_IN_SET بگردین:

$cat = 'cat2';
$result = mysql_query("SELECT * FROM `category` WHERE (FIND_IN_SET('{$cat}',`cat`)>0);");
// now $result contains record with cat2 in cat field (cat field may be = 'cat1,cat2,cat3')
البته فکر میکنم این مورد، برعکس اون چیزی باشه که شما میخواین. درواقع شما الان میخواین رکوردهایی رو پیدا کنید که فیلد cat اونها یکی از مقادیر داخل متغیر هست. برای این کار از دستور IN استفاده کنید. مثال:

$cat = "'cat1','cat2','cat3'";
$result = mysql_query("SELECT * FROM `category` WHERE (`cat` IN {$cat});");