لماذا يتعين علي استخدام علامات الرجوع الخلفية حول اسم الجدول في استعلام MySQL الخاص بي؟

StackOverflow https://stackoverflow.com//questions/12658763

  •  11-12-2019
  •  | 
  •  

سؤال

بقدر ما قرأت، فإن العلامات الخلفية ليست مطلوبة حول، على سبيل المثال، أسماء الجداول في الاستعلامات:("أدخل في اسم الجدول....").بالإضافة إلى ذلك، على حد علمي، تعتبر الشرطة السفلية صيغة مقبولة تمامًا لاستخدامها في الأسماء:foo_bar.سؤالي إذن هو لماذا فشل هذا الاستعلام:

mysql_query("INSERT INTO quick_links WHERE ...etc");

عندما يعمل هذا الاستعلام بشكل مثالي:

mysql_query("INSERT INTO `quick_links` WHERE ...etc");

هل "السريعة" أو "الروابط" كلمات محجوزة؟؟؟لم أكن أعتقد ذلك، ولكن مرة أخرى، أنا جديد إلى حد ما في MySQL، لذا أعتذر.أيضًا، هل استخدام علامات الرجوع الخلفية ضروري في "محركات تخزين" معينة (بالرجوع إلى phpMyAdmin للتعرف على المصطلحات)؟أنا أستخدم "InnoDB" إذا كان ذلك يحدث أي فرق.

شكرًا على الإجابات، أنا جديد في MySQL، وأود التأكد من أنني أفهم الفروق الدقيقة مثل هذه.

استفساري الكامل كان هذا:

mysql_query("INSERT INTO `quick_links` VALUES (
    '$user_id', '$ql_name', '$ql_url', '$ql_img'
)"); 

تم الحصول على $ql_url و$ql_name عبر $_POST ثم تم تطهيرهما باستخدام القطع وmysql_real_escape_string قبل استخدامهما في الاستعلام.$ql_img هو ببساطة عنوان url يشير إلى الدليل الذي تم تحميل الصورة المصغرة فيه، ويوجد $user_id لتحديد المستخدم المعين الذي قام بتسجيل الدخول.كان كلا الاستعلامين متماثلين تمامًا، حرفيًا، باستثناء العلامات الخلفية حول اسم الجدول.

هل كانت مفيدة؟

المحلول

يتم استخدام Backtick فقط للهروب الكلمات المحجوزة في MySQL.فهي اختيارية إذا لم تستخدم أيًا منها الكلمات الرئيسية المحجوزة بشرط أن تحتوي أسماء الجداول أو أسماء الأعمدة المستخدمة على no spaces عليه.

هذا صفحة يخبر الأحرف المسموح باستخدامها في المخطط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top