2009-11-20 31 views

Trả lời

9
$eventid = $_GET['id']; 
$field = $_GET['field']; 
$result = mysql_query("SELECT $field FROM `events` WHERE `id` = '$eventid' "); 
$row = mysql_fetch_array($result); 
echo $row[$field]; 

nhưng hãy cẩn thận khi tiêm sql vì bạn đang sử dụng $ _GET trực tiếp trong truy vấn. Nguy cơ tiêm là đặc biệt xấu vì không có chức năng cơ sở dữ liệu để thoát khỏi định danh. Thay vào đó, bạn cần phải chuyển trường thông qua một danh sách trắng hoặc (tốt hơn) sử dụng một tên khác bên ngoài tên cột và ánh xạ các tên bên ngoài vào các tên cột. Tên bên ngoài không hợp lệ sẽ dẫn đến lỗi.

+3

Hoặc sử dụng các câu lệnh đã được chuẩn bị để giúp tránh SQL Injection. Lưu ý: mysql_query không được dùng nữa, thay vào đó hãy sử dụng mysqli hoặc PDO. –

+0

@TimoHuovinen +1 [mysql_query không chấp nhận liên kết chính thức] (http://www.php.net/manual/en/function.mysql-query.php) –

14

Hãy thử điều này:

echo mysql_result($result, 0); 

Đây là đủ bởi vì bạn chỉ được lấy một lĩnh vực một hàng.

+0

nói tham số đếm không hợp lệ mysql_result ($ result, 0) – mrpatg

+2

'' cho lần đầu tiên (và chỉ) hàng. – jensgram

+0

Đúng. Đã chỉnh sửa nó. Nhưng không nên điều này thường làm việc cho hàng đầu tiên nếu tôi không tuyên bố rõ ràng. – Franz

1

Và thoát khỏi các giá trị của bạn với mysql_real_escape_string vì PHP6 sẽ không làm điều đó cho bạn nữa! :)

3

đọc hướng dẫn, nó bao gồm nó rất tốt: http://php.net/manual/en/function.mysql-query.php

Thông thường, bạn làm điều gì đó như thế này:

while ($row = mysql_fetch_assoc($result)) { 
    echo $row['firstname']; 
    echo $row['lastname']; 
    echo $row['address']; 
    echo $row['age']; 
} 
Các vấn đề liên quan