2012-03-03 4 views
0

저는 MySQL의 초보자이며 특정 ID의 이름을 검색하려고합니다. 내가 ID, 이름과 성을 포함 접점의 테이블이PHP/MySQL : 특정 ID의 이름 가져 오기

: 여기

처럼 내 데이터베이스 보이는 방법이다.

동일한 양식의 특정 ID에 대한 성과 이름을 검색하고 싶습니다.

그래서 옵션의 형식으로 끝나고 옵션 값은 각 ID의 첫 번째 이름이됩니다. 예를 들어

:

<form> 
<select name="users"> 
<option value="">Select a person:</option> 
<option value="5"> <?php echo "$first $last" ?> </option> 
<option value="10"> <?php echo "$first $last" ?> </option> 
<option value="15"> <?php echo "$first $last" ?> </option> 
</select> 
</form> 

값은 ID 년대이다.

내 PHP : 내 실제 예제

<?php include("connection.php"); 

$query="SELECT * FROM contacts"; 
$result=mysql_query($query); 

$num=mysql_numrows($result); 

mysql_close(); 

$i=0; 
while ($i < $num) { 

$first=mysql_result($result,$i,"first"); 
$last=mysql_result($result,$i,"last"); 

$i++; 
} 

?> 

내가는 데이터베이스에서의 마지막 사람의 성과 이름을 얻는다. 나는 내 양식에 지정하는 특정 ID 년대의 이름과 성을 검색 할 수있는 방법 그래서

(?) 테이블에 기본 키 필드가 연락처 가정

답변

2

이것은 while 루프가 $ first와 $ last를 매번 덮어 쓰기 때문입니다. 시도

$users = array(); 

while ($row = mysql_fetch_assoc($result)) { 
    $users[] = $row; 
} 

그리고 HTML (EDITED)에서

: 당신의 단락에 따르면

<form> 
    <select name="users"> 
    <option value="">Select a person:</option> 
    <?php foreach($users as $row): ?> 
     <option value="<?php echo $row['id']; ?>"> <?php echo $row['first'] . " " . $row['last']; ?> </option> 
    <?php endforeach; ?> 
    </select> 
</form> 
+0

이것은 컴파일되지 않습니다 : 나는 이것을 시도했다 : echo $ row [ 'first']; echo $ row [ 'last'] 작동하지만 이름과 성 사이에 공백이 없습니다. –

+0

구문을 확인하지 않았습니다. 이름과 성 사이에 공백을 추가 할 수 있도록 HTML 부분을 편집했습니다. – adidasadida

+0

감사합니다. 이것은 모든 ID의 인쇄로 작동합니다. ID 13과 15의 성과 이름 만 인쇄하려면 어떻게해야합니까? 그것은 내 질문이었다. –

1

, 당신은에 넣어 해당 필드를 사용하십시오 <option> 태그를 값으로 사용하십시오. 그런 다음 특정 <option>과 데이터베이스의 레코드간에 1 : 1로 대응합니다. 혼자서 이름을 올리면 5 개의 "John Smith"항목이 생겨 결국 원하는 것을 말할 수 없게됩니다.

그래서, 당신의 쿼리가 될 수 있도록 : 다음

SELECT id, firstname, lastname 
FROM ... 

과 : 물론

while ($row = mysql_fetch_assoc($result)) { 
     echo <<<EOL 
<option value="$row[id]">$row[firstname] $row[lastname]</option> 

EOL; 
    } 
+0

, 당신 말이 맞아 그 내 질문이다. 옵션의 값에 ID가있는 기본 키를 갖고 그 특정 ID에 대한 이름을 인쇄하고 싶습니다. 하지만 당신의 대답은 PHP에서는 컴파일되지 않는 것 같습니다. 나는 초보자입니다. –

+0

내 전체 소스 코드는 다음과 같습니다. http://pastebin.com/QYxd2xKQ –

0
$users = $_POST['users']; 
$query = 
"SELECT 
    ID, FIRSTNAME, LASTNAME 
FROM 
    CONTACTS 
WHERE 
    ID = '$users'"; 

을이 작동하는 동안, 그것은 SQL 주입 취약점의 전형적인 예이다. 입력 내용을 삭제하거나 준비된 문을 사용하고 변수를 바인딩 할 수 있습니다.

0

당신은 먼 길을 갈 것입니다

$query="SELECT * FROM contacts WHERE id = '$id'";

약간의 인터넷 검색을 할 수 있습니다. thisthis을 읽으십시오.

+1

이 사실을 알고 있지만 1 ID의 성과 이름 만 제공합니다. –