2010-08-19 3 views
0

MySQL 테이블에 저장된 데이터가 있습니다. 여기에는 새로운 행마다 auto_increment ID 번호 (고유)가 포함됩니다.쿼리 된 ID + 행만 표시합니다. PHP/MySQL

사용자가 $_GET 기능을 사용하여 특정 ID 번호를 가져올 수 있기를 바랍니다.

예 : 사용자로드 http://mysite.com/id.php?id=123
페이지에 행과 함께 ID 번호 123이 표시됩니다.

echo $row['id']; 
echo "<table>"; 
echo "<tr> <th>Unit</th> <th>Message</th> <th>Date</th> </tr>"; 
while($row = mysql_fetch_array($result)) { 

echo "<tr><td>"; 
echo $row['title']; 
echo "</td><td>"; 
echo $row['description']; 
echo "</td><td>"; 
echo $row['pubDate']; 
echo "</td></tr>"; 

} 
echo "</table>"; 
echo "</center>"; 

내가 어디에 넣었는지에 관해서는 $_GET 비트가 붙어 있습니다.

감사합니다 :)

+0

당신의 SQL 쿼리가 무엇에 추가하여 시간이 많이 자신을 절약 할 수 있습니다, 나중에 비교를하고 시간을 낭비? –

답변

3

당신은 다음과 같이 (SQL 주입을 방지하기 위해 intval를 사용) 쿼리에 추가한다 : 당신이 $row을 사용하기 때문에

// use the id in your WHERE clause, convert it to an integer to avoid sql injections 
$query = 'SELECT fields FROM table WHERE id = ' . intval($_GET['id']); 

$result = mysql_query($query); 
$row = mysql_fetch_row($result); 

... do stuff with $row ... 
+0

btw - intval이 이상합니다 :'echo intval (array ('foo', 'bar'))); // 1' - 뭐라고 요? –

+0

@Dominic Rodger PHP는 (때때로) 별나다;). 편집 해 주셔서 감사합니다! – Max

+0

대단히 감사합니다. 누구나 원한다면 http://codepad.org/H3l5RtrV – Dean

0

는 첫째, 귀하의 코드를 훨씬 이해가되지 않습니다 그것이 정의되기 전에.

둘째, $result 모두에서 정의되지 않고,해야한다, 예를 들어 다음과 같이 :

$id  = intval($_GET['id']); 
$result = mysql_query("SELECT FROM table WHERE id = '$id'"); 

을 그리고 지금 당신은 방법과 장소 $_GET['id']를 사용하는 것을 알고있다.

+0

나는 단지 그것을 잘랐다. 더 일찍 정의되었다. – Dean

0
$id = $_GET['id']; 
$id = mysql_real_escape_string($id); 
$query = "SELECT * FROM `Table` WHERE `id`='" . $id . "'"; 
$res = mysql_query ($query); 
$exist = mysql_num_rows($res); 
if ($exist) { 
    $row = mysqlfetch_assoc($res); 
    ... 
} 
+0

'yourpage.com?id= '; DELETE * FROM Table; SELECT * FROM 테이블 WHERE id = '3' –

+0

데이터와 필드가 이스케이프되므로이 쿼리는 작동하지 않습니다. – pltvs

0

그나마 원래의 질의

$id = intval($_GET['id']); 
$query = "SELECT whatever FROM table WHERE id=$id"; 
+0

그래, 그게 내가 생각했던거야. 비록 그것을 거기에 넣는 방법을 찾을 수 없었습니다. 고맙습니다. – Dean

관련 문제