PDA

View Full Version : پیشنهاد برای نوشتن یک کوئری جستجو به وسیله stored procedure



sarapepors
پنج شنبه 13 تیر 1392, 09:28 صبح
سلام به همگی
من یک الگوریتم برای چند کلمه کلیدی که تعدادشون نامشخص هست نوشتم منتها در تبدیل این کوئری به stored procedure مشکل دارم


$sql_result="SELECT DISTINCT advertisement_id,title, LEFT(description,100) AS summery,insert_date,advertisement_image
FROM tbl_advertisement,tbl_advertisement_cat,tbl_servic es WHERE tbl_advertisement.cat_id=tbl_advertisement_cat.cat _id AND
advertisement_service=service_id ";
if(isset($_GET['search'])){
if($_GET['subCat']!=0){
$sql_result.="AND tbl_advertisement_cat.cat_id=".$_GET['subCat'];
}
else if($_GET['cat']!=0){
$sql_result.="AND parent_id=".$_GET['cat'];
}
if($_GET['city']!=0){
$sql_result.=" AND city=".$_GET['city'];
}}
$sql_result.=" AND (";
for($i=0;$i<count($keywords);$i++){
$sql_result.=" title LIKE '%".$keywords[$i]."%' OR description LIKE '%".$keywords[$i]."%' ";
if($i!=count($keywords)-1)
$sql_result.="OR";
}//foreach
$sql_result.=" )ORDER BY lastupdate_date DESC"


این کد رو من در یک صفحه php نوشتم و کلمات کلیدی رو با یک حلقه for به کوئری اضافه کردم حالا اگر بخوام همه رو در یک sp بنویسم پیشنهاد دوستان چیه با توجه به اینکه اصلا نمیدونم آرایه ها در sp ساپرت میشن یا خیر (کلمات کلیدی در آرایه قرار بگیرند)
دوستان اگر تابحال کوئری جستجو با sp نوشتم میشه راهمنایی کنن یا کدی اینجا قرار بدن
مرسی از همگی

Veteran
پنج شنبه 13 تیر 1392, 09:41 صبح
سینکتس sp به این شکل هست
CREATE PROCEDURE sp_users_SelectAll()
BEGIN
SELECT * FROM users;
END
تعریف متغیر
و مقدار دهی
DECLARE user_id INT;
SET user_id=(se;ect id from users where users_id=4);
شرط
IF user_id >44 THEN

ELSE

END IF;
دیگه بیشتر بلد نیستم در همین بیشتر کار نکردم.
اما میتونین از خود سایت MYSQL کلی چیز یاد بگیرین

sarapepors
پنج شنبه 13 تیر 1392, 09:57 صبح
خیلی ممنون من میتونم با sp کار کنم همه کوئری ها رو هم با sp مینویسم اما در این مورد خاص که تعداد کلمات کلیدی از 1 بیشتر و در هر بار جستجو معلوم نیس کاربر چند کلمه وارد میکنه میخام بدونم چطو میشه این کلمات رو با پارامتر بفرستمش ب sp لایک بگیرم با برخی از فیلد های دیتا بیس؟؟

MMSHFE
پنج شنبه 13 تیر 1392, 11:57 صبح
اگه از PDO استفاده میکنید، خودش به راحتی قابلیت ارسال پارامتر به SP رو هم فراهم میکنه.
PHP: Prepared statements and stored procedures (http://php.net/manual/en/pdo.prepared-statements.php)