ينتج SQL إلى صفيف PHP
سؤال
أرغب في إنشاء صفيف (في PHP) من نتائج SQL مثل هذا: لدينا "منشورات" SQL Table التي تخزن اسم و ال رسالة.مثال:
الاسم | رسالة
جون | مرحبًا
نيك | يوم جميل
جورج | مع السلامة
جون | أين
ما أريد هو إخراج أسماء الأشخاص الذين نشروا رسالة ولكن لا يعرضون نفس الأسماء أكثر من وقت واحد. لذلك سيكون الناتج جون ، نيك ، جورج. (من هذه السجلات ، نرى أن جون نشر رسالتين ، ولكن في الإخراج النهائي ، نرى مرة واحدة فقط اسمه).
هل هذا ممكن بطريقة ما؟ شكرا مقدما.
المحلول
محاولة:
$sql = <<<END
SELECT DISTINCT Name FROM Posts
END;
$query = mysql_query($sql) or die($sql . ' - ' . mysql_error());
$names = array();
while ($row = mysql_fetch_array($query)) {
$names[] = $row[0];
}
print_r($names);
نصائح أخرى
اختر مسافة
يمكنك تشغيل استعلام SQL لتحديد الأسماء المتميزة ، ولا شيء آخر:
SELECT DISTINCT Name FROM Posts;
سيعطيك هذا مجموعة نتائج تتكون من قيم أسماء مميزة ، مع إرجاع كل قيمة فريدة فقط مرة واحدة في المجموعة.
للحصول على العد ، ستحتاج إلى التجميع باستخدام المجموعة بواسطة:
SELECT
NAME
, COUNT(*) as Posts
FROM
Posts
GROUP BY
NAME
إليكم SQL إذا لم تكن منبهًا للتجميع
select count(name) as N, name from posts group by name ;
الأشخاص الذين لديهم أكثر من منشور واحد
select count(name) as N, name from posts group by name having N > 1 ;