ForHosting KIT · أدوات المطورين

أنشئ عبارة WHERE في SQL ذات معلمات من المرشحات

حوّل قائمة منظمة من مرشحات التطبيق إلى الجزأين اللذين يحتاج إليهما عميل قاعدة البيانات: عبارة WHERE في SQL تحتوي على عناصر نائبة موضعية، ومصفوفة مستقلة من المعلمات المرتبة.

● Betaمجاني · داخل متصفحك
استخدمها من الويبAPIالبريدTelegramالتطبيق قريبًا

تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم

يوضع كل اسم حقل بين علامتي اقتباس بوصفه معرّف SQL، بما في ذلك كل جزء من الاسم المؤهل، بينما تبقى القيم خارج نص SQL. تحتفظ المرشحات بترتيبها الأصلي وتُربط بواسطة AND، لذلك تكون النتيجة متوقعة لمنشئات الاستعلامات وأدوات الإدارة وشاشات التقارير ونقاط النهاية التي تستقبل المرشحات في صورة بيانات.

أنشئ بنية SQL من دون دمج القيم في النص

تبدأ شاشات البحث الديناميكية غالباً بسجلات تبدو غير ضارة، مثل حقل وعامل وقيمة. تظهر الخطورة عند تحويل هذه السجلات إلى SQL بإدراج القيمة مباشرة داخل سلسلة نصية. يفصل هذا المنشئ بين البنية والبيانات. فهو يعيد عبارة WHERE ذات معلمات في SQL تحتوي على عناصر نائبة موضعية بأسلوب PostgreSQL مثل $1 و$2، إلى جانب مصفوفة params بالترتيب المطابق تماماً. أضف العبارة إلى جملة SELECT أو UPDATE أو DELETE أكبر، ومرّر params إلى برنامج تشغيل قاعدة بيانات متوافق. لا ينفذ المنشئ أي استعلام، ولا يتصل بقاعدة بيانات، ولا يفحص مخططاً، ولا يقرر الأعمدة التي يحق للمتصل استخدامها. ينبغي لتطبيقك أن يحتفظ بقائمة سماح عندما يستطيع المستخدمون التأثير في أسماء الحقول. يمنع وضع المعرّفات بين علامتي اقتباس علامات الترقيم والكلمات المحجوزة من إفساد الصياغة، لكن التفويض يظل مسؤولية التطبيق. ولأن المرشحات تُربط بواسطة AND وفق ترتيب الإدخال، يكون الناتج ثابتاً ويسهل تسجيله أو مقارنته أو دمجه مع مقدمة استعلام ثابتة.

افهم العوامل والعناصر النائبة وفحوص القيم الخالية

تشمل العوامل المدعومة المساواة وعدم المساواة ومقارنات الترتيب وLIKE وNOT LIKE وIN وNOT IN وIS NULL وIS NOT NULL. يُحوّل نص العامل إلى الأحرف اللاتينية الكبيرة وتُختصر المسافات المتكررة، لذلك تنتج كتابة مثل “not like” صياغة SQL معيارية. يستهلك كل عامل مقارنة عادي معلّمة واحدة. يتطلب IN وNOT IN مصفوفة غير فارغة، ثم يوسّعانها إلى عنصر نائب لكل عنصر مع الحفاظ على الترتيب. لا تستهلك عوامل فحص null أي معلّمة ولا تحتاج إلى قيمة لأن قواعد SQL الخاصة بها لا تتضمن عنصراً نائباً. إذا غابت القيمة عن أي عامل آخر، تُرفض المدخلات بدلاً من إنشاء SQL ناقص. تُقبل قيم JSON القياسية، ومنها السلاسل والأرقام والقيم المنطقية وnull، أما المصفوفات فتُحجز لعاملي القوائم. يستخدم الناتج عمداً عناصر نائبة مرقمة بعلامة الدولار، وهي مناسبة لـPostgreSQL والمكتبات المتوافقة. إذا كان برنامج التشغيل لديك يستخدم علامات الاستفهام أو المعلمات المسماة، فحوّل الصياغة في مهايئ مضبوط مع الحفاظ على ترتيب المعلمات المعاد.

هرّب المعرّفات وتحقق من سياسة التطبيق

يُعامل كل حقل باعتباره معرّفاً قد يكون مؤهلاً. يتحول اسم مثل users.created_at إلى جزأين يوضع كل منهما بين علامتي اقتباس على حدة، وتُهرّب علامة الاقتباس المزدوجة الداخلية بتكرارها وفق قواعد معرّفات SQL القياسية. تُرفض الأسماء الفارغة والأجزاء الفارغة المفصولة بالنقاط. يمنع هذا الأسلوب الخلط بين سلسلة الحقل وصياغة SQL غير المقتبسة، لكنه لا يفترض أن جميع محركات قواعد البيانات تتبع قواعد اقتباس متطابقة. تحقق من التوافق مع قاعدة البيانات المستهدفة، ولا سيما إذا لم تكن تتبع اصطلاح علامات الاقتباس المزدوجة. كذلك، لا يساوي التهريب منح الصلاحية. إذا كان متصل خارجي يختار الحقول، فاربط مفاتيح المرشحات العامة بمجموعة صريحة من الأعمدة الحقيقية قبل استدعاء المنشئ. طبّق أيضاً قواعد العمل على العوامل؛ فقد تسمح نقطة نهاية للتقارير بالمساواة والنطاقات وترفض بحث الأنماط رغم دعم LIKE. ينتج عن أي عامل SQL غير مدعوم خطأ إدخال واضح بدلاً من تمرير صياغة مجهولة. تعمل القدرة بصورة حتمية، ولا ترسل طلبات شبكة، ولا تعيد إلا العبارة والمعلمات.

تشغيل مرشحات نقطة نهاية API

حوّل مرشحات سلسلة الاستعلام المتحقق منها إلى عبارة ومعلمات مرتبة لطلب قاعدة البيانات.

إنشاء استعلام تقرير داخلي

حوّل صفوف منشئ التقارير إلى شروط مرتبطة بواسطة AND من دون إدراج قيم التقرير في نص SQL.

إنشاء استعلامات مستودع قابلة للاختبار

سجّل العبارة الحتمية ومصفوفة المعلمات بصورة منفصلة عند اختبار طبقة الوصول إلى البيانات.

ما تكلفة الاستخدام؟

يبدأ كل طلب API من $0.002. ويتوفر مشغّل المتصفح للاستخدام التفاعلي.

هل تنفذ هذه الأداة SQL؟

لا. إنها تعيد عبارة WHERE ومصفوفة params مرتبة فقط، ثم يمررهما تطبيقك إلى برنامج تشغيل قاعدة البيانات.

ما صياغة العناصر النائبة التي تُنشأ؟

تُنشأ عناصر نائبة مرقمة بأسلوب PostgreSQL، مثل $1 و$2 وما يليهما.

هل يمكنني استخدام IN وNOT IN؟

نعم. قدّم مصفوفة غير فارغة بوصفها القيمة، وسينشئ المنشئ عنصراً نائباً لكل عنصر.

كيف تُمثل فحوص القيم الخالية؟

استخدم IS NULL أو IS NOT NULL. لا تحتاج هذه العوامل إلى قيمة ولا تضيف عنصراً إلى params.

هل يغني تهريب المعرّفات عن قائمة الأعمدة المسموح بها؟

لا. يحمي التهريب الصياغة، بينما تحدد قائمة السماح الأعمدة والأسماء المؤهلة التي يجوز للمتصل ترشيحها.

كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.

POSThttps://api.kit.forhosting.com/dev2/sql-where-builder

صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.

curl -X POST https://api.kit.forhosting.com/dev2/sql-where-builder \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filters":[{"field":"users.status","operator":"=","value":"active"},{"field":"users.age","operator":">=","value":21}]}'
{
  "filters": [
    {
      "field": "users.status",
      "operator": "=",
      "value": "active"
    },
    {
      "field": "users.age",
      "operator": ">=",
      "value": 21
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev2.sql_where_builder",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.

لكل طلب$0.002

السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.

max_items100
HTTPالرمزالمعنى
401unauthorizedمفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك.
402insufficient_balanceرصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة.
404unknown_typeنوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب.
429rate_limitedتجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة.

اطّلع على توثيق KIT الكامل ←