MySQL PHP استعلام وجود جملة
سؤال
أنا أحاول الحصول على هذا الاستعلام للعمل ولكني أحصل على هذا الخطأ: العمود غير معروف "zips.city" في "وجود جملة"
`$query = "SELECT zips.* FROM zips HAVING zips.city LIKE '%$city%' AND zips.stateabbr LIKE '%$state%' LIMIT 1"; $result = mysql_query($query) or die (mysql_error());`
يحتوي جدول Zips الخاص بي على عمود في المدينة ، لذا لست متأكدًا من المشكلة ، وأنا أعلم أني بالوصول إلى قاعدة البيانات لأنني أستطيع تشغيل هذا الاستعلام بدون أخطاء:
$zip1query = "SELECT zips.* FROM zips WHERE zips.zip = '$zip' ";
أي نصيحة ستكون موضع تقدير كبير! شكرًا!
المحلول
ال having
البند لا يعني نفس الشيء مثل where
البند: عند تشغيل استعلام بسيط ، يجب استخدامك where
- وهو ما فعلته في استفسارك الثاني ، الذي يعمل.
having
يتم استخدامه عندما يجب تطبيق الحالة على نتيجة أ group by
بند.
مما يعني أنه هنا ، يجب أن يكون استعلامك بناء بهذه الطريقة:
$query = "SELECT zips.*
FROM zips
where zips.city LIKE '%$city%'
AND zips.stateabbr LIKE '%$state%'
LIMIT 1";
مع ذلك ، إذا كان لا يزال لديك خطأ في عمود غير موجود أو غير موجود (على الأقل ل city
و/أو stateabbr
), ، سيكون ذلك لأن هذا العمود غير موجود في الجدول الخاص بك.
في هذه الحالة ، لا يوجد الكثير الذي يمكننا القيام به: سيتعين عليك التحقق من بنية الجدول الخاص بك ، لتحديد الأعمدة التي تحتوي عليها.
يمكنك التحقق من هذا الهيكل باستخدام أداة قائمة على الويب مثل phpmyadmin ، أو استخدام تعليمة SQL مثل:
desc zips;
كمرجع ، نقلاً صفحة MySQL اليدوية لـ select
:
يتطلب معيار SQL أن يشير إلى الأعمدة فقط في
GROUP BY
جملة أو الأعمدة المستخدمة في وظائف إجمالية.
...
لا تستخدمHAVING
للعناصر التي يجب أن تكون فيWHERE
بند.
على سبيل المثال ، لا تكتب ما يلي:SELECT col_name FROM tbl_name HAVING col_name > 0;
اكتب هذا بدلاً من ذلك:
SELECT col_name FROM tbl_name WHERE col_name > 0;
...
الHAVING
يمكن أن يشير البند إلى الوظائف الإجمالية ، التيWHERE
لا يمكن للفقرة
نصائح أخرى
جرب استخدام WHERE
بدلاً من HAVING
.
الطريقة الصحيحة للقيام بذلك هي استخدام جملة حيث.
$query = "SELECT
zips.*
FROM
zips
WHERE
zips.city LIKE '%$city%'
AND
zips.stateabbr LIKE '%$state%'
LIMIT 1";
يجب استخدامه عند التجميع ، انظر هنا للحصول على شرح
يا Jeez آسف يا رفاق لقد اكتشفت المشكلة ، ويبدو أنني وضعت مساحة أمام المدينة عندما قمت بتسمية الأعمدة في طاولتي. لذلك قمت بإعادة تسمية العمود ويعمل بفضل الفصول على أي حال! ولكن باستخدام الوظيفة التي يجب أن تسرع الأمور ، شكرًا يا رفاق!