मेरे पास एक MySQL क्वेरी है जो सीधे मेरे स्थानीय MySQL डेटाबेस पर निष्पादित होने पर ठीक काम करती है, लेकिन PHP के माध्यम से निष्पादित होने पर एक अलग परिणाम दिखाती है।PHP और MySQL एक ही क्वेरी के साथ अलग-अलग परिणाम दिखाते हैं
SELECT a.id, a.title, a.public, a.sysstamp, a.password, t.thumbURL, t.count
FROM 0_lychee_albums AS a
LEFT JOIN (SELECT id, album, thumbURL,
@num := IF(@group = album, @num + 1, 0) AS count,
@group := album AS dummy
from 0_lychee_photos
WHERE album != 0
ORDER BY album, star DESC) AS t ON a.id = t.album
WHERE count <= 2 OR count IS NULL;
या एक एक लाइनर के रूप में:
SELECT a.id, a.title, a.public, a.sysstamp, a.password, t.thumbURL, t.count FROM 0_lychee_albums AS a LEFT JOIN (SELECT id, album, thumbURL, @num := IF(@group = album, @num + 1, 0) AS count, @group := album AS dummy FROM 0_lychee_photos WHERE album != 0 ORDER BY album, star DESC) AS t ON a.id = t.album WHERE count <= 2 OR count IS NULL;
परिणाम:
| id | title | public | sysstamp | password | thumbURL | count |
| 71 | [Import] 01 | 0 | 1415091268 | NULL | cad008943372d984a9b74378874128f8.jpeg | 0 |
| 72 | [Import] 9n4| 0 | 1415091268 | NULL | 7b832b56f182ad3403521589e2815f67.jpeg | 0 |
| 72 | [Import] 9n4| 0 | 1415091268 | NULL | f058f379ce519f1d8a2ff8c0f5003631.jpeg | 1 |
| 72 | [Import] 9n4| 0 | 1415091268 | NULL | a4d59377bed059e3f60cccf01a69c299.jpeg | 2 |
| 73 | Untitled | 0 | 1415114200 | NULL | NULL | NULL |
पीएचपी परिणाम:
| id | title | public | sysstamp | password | thumbURL | count |
| 71 | [Import] 01 | 0 | 1415091268 | NULL | cad008943372d984a9b74378874128f8.jpeg | 0 |
| 72 | [Import] 9n4| 0 | 1415091268 | NULL | 7b832b56f182ad3403521589e2815f67.jpeg | 0 |
| 72 | [Import] 9n4| 0 | 1415091268 | NULL | f058f379ce519f1d8a2ff8c0f5003631.jpeg | 0 |
| 72 | [Import] 9n4| 0 | 1415091268 | NULL | a4d59377bed059e3f60cccf01a69c299.jpeg | 0 |
| 72 | [Import] 9n4| 0 | 1415092318 | NULL | 7b832b56f182ad3403521589e2815f67.jpeg | 0 |
| 72 | [Import] 9n4| 0 | 1415092369 | NULL | cad008943372d984a9b74378874128f8.jpeg | 0 |
| 72 | [Import] 9n4| 0 | 1415092369 | NULL | 84030a64a1f546e223e6a46cbf12910f.jpeg | 0 |
| 73 | Untitled | 0 | 1415114200 | NULL | NULL | NULL |
क) count
बढ़ती नहीं है की तरह यहहोना चाहिए बी) ए की वजह से) यह अधिक पंक्तियों को दिखाता है (इसे प्रति आईडी तक सीमित होना चाहिए)
मैंने इसे कई बार चेक किया, दोनों प्रश्न बिल्कुल समान हैं। PHP में कोई उपयोगकर्ता इनपुट या कोई अंतर नहीं है।
मैंने पहले ही similar questions चेक किया है, लेकिन उनमें से कोई भी मदद नहीं करता है। निम्नलिखित प्रश्न MySQL और PHP दोनों पर एक ही परिणाम दिखा रहे हैं:
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
क्या कोई इस अंतर को हल करने के मुद्दे से अवगत है?
अधिक जानकारी के साथ संपादित करें:
$database = new mysqli($host, $user, $password, $database);
$query = "SELECT a.id, a.title, a.public, a.sysstamp, a.password, t.thumbURL, t.count FROM 0_lychee_albums AS a LEFT JOIN (SELECT id, album, thumbURL, @num := IF(@group = album, @num + 1, 0) AS count, @group := album AS dummy FROM 0_lychee_photos WHERE album != 0 ORDER BY album, star DESC) AS t ON a.id = t.album WHERE count <= 2 OR count IS NULL";
$albums = $database->query($query);
while ($album = $albums->fetch_assoc()) { print_r($album); }
मैं भी साथ और क्वेरी निष्पादित करने से पहले निम्नलिखित के बिना इसे करने की कोशिश:
$database->set_charset('utf8');
$database->query('SET NAMES utf8;');
num_rows() फ़ंक्शन आपको क्या बताता है? –
यह संभव नहीं है कि एक लाइनर या स्वरूपित एसक्यूएल इतना अंतर करे, आपको अपना कोड देखना चाहिए। मुझे लगता है कि कुछ है। आपकी क्वेरी में केवल अंतर 'स्टार डीईएससी' है, लेकिन मुझे नहीं लगता कि differenc –
सुनिश्चित करेगा कि आपका PHP कोड उसी डीबी को इंगित कर रहा है, जहां आप इस प्रश्न को बनाकर इस क्वेरी –