2011-10-10 6 views
1

"body"라는 텍스트 필드와 "title"이라는 제목 필드가있는 mySQL 테이블이 있습니다. 다음

$query="SELECT title, LEFT(body, 100) FROM table"; 
$result = mysql_query($query); 

및 출력이 웹 페이지에 결과 : 는이 같은하여 텍스트 필드 "몸"의 첫 번째 100 개 문자를 선택합니다

while ($row = mysql_fetch_array($result)){ 
    echo "...html... {$row["title"]} ...html... {$row["body"]} ...html..."; 
} 

하지만 오류가 발생합니다 : "알림 : 정의되지 않은 색인 : 299 행의 C : \ wamp \ www \ index.php에있는 본문" 누군가 도움이 될 수 있습니까? 감사합니다. .

+0

당신은'인 print_r ($ 행)을 할 경우 무슨 일이 일어나고 있는지 볼 수있다 '(이, 솔직히, 본능적으로 이런 모든 경우에 첫 번째 디버깅 단계이어야한다). – JJJ

+0

echo 출력을 이스케이프 처리하지 않고'{hmtlentities ($ row [ 'title'])}'를 사용하여 XSS 공격을 방지하십시오. – Johan

+0

경고 요한을위한 감사하지만 내가 이것을 시도 할 때 : (!) 구문 분석 오류 : 예기치 않은 T_ENCAPSED_AND_WHITESPACE, T_STRING 또는 T_VARIABLE 또는 T_NUM_STRING이 C : \ wamp \ www \ index.php의 287 번 라인에서 예상 됨 – Kostas

답변

2

LEFT()과 같은 기능을 적용 할 때 별칭을 사용하여 필드의 이름을 바꾸어야합니다. 그렇지 않으면 이름으로 쉽게 참조 할 수 없습니다.

SELECT title, LEFT(body, 100) AS body FROM table 
           ^^^^^^^ give name to field 

이제 {$row["body"]}에 대한 참조가 올바르게 작동해야합니다. 그 익명의 열을 생성 하

$query = "SELECT title, LEFT(body, 100) as body FROM table"; 
+0

감사합니다. , 그것은 작동합니다! – Kostas

1

당신은 당신이 어떤 기능을 적용 할 경우 필드 이름 또는 LEFT(body, 100)으로 액세스 할 수 있습니다. 그냥 별칭을 추가 :

$query="SELECT title, LEFT(body, 100) AS BODY FROM table"; 
$result = mysql_query($query);
+0

답변에 많은 감사합니다 – Kostas

0

:

+0

답변 주셔서 감사합니다 – Kostas