저는 데이터베이스 쿼리를 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);
... 내 쿼리 중 하나를 변환 그것은 내가 튜토리얼에서 볼 수있는 대부분의 예제보다 더 친절한 더 사용하라고 -하지만 그것은 작동하지 않습니다.
주의 : 정의되지 않은 변수 : 그것은 두 오류 메시지가 발생에서 DB/사용자/... 라인 118
치명적인 오류 :의 비 객체() 제조/사용자 멤버 함수를 호출/...
$stmt = $db->prepare("ELECT P.URL, P.Title, P.Subtitle, P.MetaTitle, P.MetaDesc, P.KW, P.Site, P.Live,
라인 (118)
그들은이 라인에 해당 ...
에 나는 몇 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->에 누락 된 S가 있습니까? ("ELEC"질문에만 오타가 있거나 코드에도 포함되어 있습니까?) – hammus
그래서 현재 검색어를 둘러싸고있는 코드를 게시하십시오. 이 에러 메시지는'$ db'가 범위 내에 있지 않다는 것을 의미합니다. 함수 안에'$ db'를 매개 변수로 전달하거나 (선호하지 않음) 전역 적으로 액세스해야합니다 (선호하지 않음) –
You 새 PDO로 $ db를 선언해야합니다. – Jompper