-2
我在學習如何將我的數據庫查詢轉換爲PDO。有人告訴我,將我的查詢一個如下...這個PDO查詢有什麼問題?
$stmt = $db->prepare("SELECT P.URL, P.Title, P.Subtitle, P.MetaTitle, P.MetaDesc, P.KW, P.Site, P.Live, PB.Common, PB.First, PB.Middle, PB.Last, PB.Prefix, PB.Suffix, PB.Alpha, PB.Born, PB.Died, PB.Birth_Place, PB.Death_Place, PB.Nationality, PC.URL, PC.Class, Brf.URL, Brf.Site, Brf.Brief, ART.Article PXA
FROM people P
LEFT JOIN people_1_bio PB ON PB.URL = P.URL
LEFT JOIN people_1_class PC ON PC.URL = P.URL
LEFT JOIN people_briefs Brf ON Brf.URL = P.URL
LEFT JOIN people_articles_px ART ON ART.URL = P.URL
WHERE P.Site = 'PX' AND Brf.Site = 'PX' AND PB.Alpha LIKE ? AND Brf.Brief !='' AND PC.URL = P.URL AND P.Live = 1
GROUP BY P.URL ORDER BY P.N");
$stmt->execute(array($MyURL.'%'));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
它更多的用戶比大多數的我在教程看到的例子友好的 - 但它不工作。它拋出兩個錯誤消息:
說明:未定義變量:分貝在/用戶/ ...上線118
致命錯誤:調用一個成員函數準備()非對象上在/用戶/ ......上線118
它們對應於這條線......
$stmt = $db->prepare("ELECT P.URL, P.Title, P.Subtitle, P.MetaTitle, P.MetaDesc, P.KW, P.Site, P.Live,
我發現問幾個StackOverflow的討論同樣的問題,但我不明白的答案。一個討論說你必須使用這個例子創建一個「$ db對象」:
$db = new mysqli("localhost", "username", "password", "database")
但是,我正在使用MySQL。我嘗試將mysqli更改爲mysql,但它不起作用。
另一個討論說我需要粘貼我上面的查詢如下:
function confirmIPAddress($value) {
global $db
要使其工作,我一定要在末尾添加一個分號,然後把一個右括號我的查詢後。但它不起作用。我認爲PDO應該是用戶友好的,但它甚至不會與舊的方法相比。
這是我原來的查詢:
$res = mysql_query ("SELECT P.URL, P.Title, P.Subtitle, P.MetaTitle, P.MetaDesc, P.KW, P.Site, P.Live, PB.Common, PB.First, PB.Middle, PB.Last, PB.Prefix, PB.Suffix, PB.Alpha, PB.Born, PB.Died, PB.Birth_Place, PB.Death_Place, PB.Nationality, PC.URL, group_concat(PC.Class), Brf.URL, Brf.Site, Brf.Brief, ART.Article PXA
FROM people P
LEFT JOIN people_1_bio PB ON PB.URL = P.URL
LEFT JOIN people_1_class PC ON PC.URL = P.URL
LEFT JOIN people_briefs Brf ON Brf.URL = P.URL
LEFT JOIN people_articles_px ART ON ART.URL = P.URL
WHERE P.Site = 'PX' AND Brf.Site = 'PX' AND PB.Alpha LIKE '$MyURL%' AND Brf.Brief !='' AND PC.URL = P.URL AND P.Live = 1
GROUP BY P.URL ORDER BY P.N") or die (mysql_error());
'$ stmt = $ db-> prepare(「ELEC」是否僅在問題中存在拼寫錯誤,還是代碼中存在錯誤?) – hammus
所以請發佈代碼,因爲您現在正在圍繞查詢。錯誤消息意味着'$ db'不在範圍內,如果這發生在函數內部,那麼您必須將'$ db'作爲參數傳遞給函數(首選)或全局訪問它(不是首選) –
需要將$ db聲明爲新的PDO – Jompper