Hướng dẫn php pass variable to sql query - biến php chuyển sang truy vấn sql

    $user = mysql_real_escape_string($_POST["userlogin"]);

    mysql_connect("uritomyhost","myusername","password"); 
    mysql_select_db('mydatabase');
    mysql_query('UPDATE table SET field = field + ($userlogin)');

Đây có phải là cách đúng đắn để nhận người dùng từ yêu cầu POST và sau đó chèn nó vào truy vấn SQL của tôi?

Đã hỏi ngày 7 tháng 9 năm 2012 lúc 6:57Sep 7, 2012 at 6:57

Hướng dẫn php pass variable to sql query - biến php chuyển sang truy vấn sql

1

Ngừng sử dụng các chức năng lỗi thời và sử dụng PDO thay thế.

$stmt = PDO::prepare('UPDATE table SET field = field + :field');
$stmt->execute(array('field' => $_POST["userlogin"]));

Đọc một số thông tin về PDO. Nói tóm lại: nó thoát khỏi dữ liệu của bạn cho bạn, khá nhất quán trên cơ sở dữ liệu và nói chung chỉ dễ dàng hơn.

Đã trả lời ngày 7 tháng 9 năm 2012 lúc 7:13Sep 7, 2012 at 7:13

Benjamin Dielebenjamin DieleBenjamin Diele

1.1671 Huy hiệu vàng10 Huy hiệu bạc26 Huy hiệu đồng1 gold badge10 silver badges26 bronze badges

2

Bạn nên sử dụng mysql_real_scape_string () ngay sau khi kết nối với cơ sở dữ liệu ... vì vậy hãy thay đổi mã của bạn thành điều này:
so change your code to this :

mysql_connect("uritomyhost","myusername","password"); 
mysql_select_db('mydatabase');
$userlogin = mysql_real_escape_string($_POST["userlogin"]);
mysql_query("UPDATE table SET field = '$userlogin'");

Đã trả lời ngày 7 tháng 9 năm 2012 lúc 7:03Sep 7, 2012 at 7:03

Hướng dẫn php pass variable to sql query - biến php chuyển sang truy vấn sql

M rostamim rostamiM Rostami

3,8651 Huy hiệu vàng34 Huy hiệu bạc38 Huy hiệu đồng1 gold badge34 silver badges38 bronze badges

Hãy thử như thế này.

$user = mysql_real_escape_string($_POST["userlogin"]);

mysql_connect("uritomyhost","myusername","password"); 
mysql_select_db('mydatabase');
mysql_query("UPDATE table SET field = value where user='$user'");

Đã trả lời ngày 7 tháng 9 năm 2012 lúc 7:03Sep 7, 2012 at 7:03

M rostamim rostami

mysql_query("UPDATE table SET field = field + ('$user')");

However,

3,8651 Huy hiệu vàng34 Huy hiệu bạc38 Huy hiệu đồng

Hãy thử như thế này.

mysql_query("UPDATE table SET field = field WHERE user= '$user'");

Thử cái nàySep 7, 2012 at 7:04

Hướng dẫn php pass variable to sql query - biến php chuyển sang truy vấn sql

Bạn có thể đang cập nhật tất cả các trường trong bảng của mình vì bạn không có nơi nào trong mệnh đề UPDATE của bạnConrad Lotz

Không nên thay vì nó3 gold badges22 silver badges27 bronze badges

0

Đã trả lời ngày 7 tháng 9 năm 2012 lúc 7:04PDO or MYSQLI

Conrad Lotzconrad Lotz

prepare("INSERT INTO tanlename (field) VALUES (?)");
    $stmt->bindParam(1, $user);
    $stmt->execute();

?>

Thử cái nàySep 7, 2012 at 7:04

Hướng dẫn php pass variable to sql query - biến php chuyển sang truy vấn sql

Bạn có thể đang cập nhật tất cả các trường trong bảng của mình vì bạn không có nơi nào trong mệnh đề UPDATE của bạnJohn Woo

Không nên thay vì nó69 gold badges491 silver badges487 bronze badges

1

Đã trả lời ngày 7 tháng 9 năm 2012 lúc 7:04

mysql_query("UPDATE table SET field = field + ({$userlogin})");

Conrad Lotzconrad LotzSep 7, 2012 at 6:59

Hướng dẫn php pass variable to sql query - biến php chuyển sang truy vấn sql

7.9303 Huy hiệu vàng22 Huy hiệu bạc27 Huy hiệu ĐồngMohit Bumb

Tôi nghĩ rằng bạn muốn

$stmt = PDO::prepare('UPDATE table SET field = field + :field');
$stmt->execute(array('field' => $_POST["userlogin"]));
0 thay vì sử dụng
$stmt = PDO::prepare('UPDATE table SET field = field + :field');
$stmt->execute(array('field' => $_POST["userlogin"]));
1. Tại sao
$stmt = PDO::prepare('UPDATE table SET field = field + :field');
$stmt->execute(array('field' => $_POST["userlogin"]));
2? Điều này sẽ kết hợp các giá trị. Và một điều nữa, vui lòng sử dụng pdo hoặc mysqli2 gold badges32 silver badges52 bronze badges

1

Ví dụ về việc sử dụng tiện ích mở rộng PDO:i) and use prepared statements. Using prepared statements is more secure than using straight queries and including the variable in the query string. Moreover, mysql will be deprecated soon. Example :

prepare("SELECT District FROM City WHERE Name=?")) {

/* bind parameters for markers */
$stmt->bind_param("s", $city);

/* execute query */
$stmt->execute();

/* bind result variables */
$stmt->bind_result($district);

/* fetch value */
$stmt->fetch();

printf("%s is in district %s\n", $city, $district);

/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
?>

Đã trả lời ngày 7 tháng 9 năm 2012 lúc 7:03Sep 7, 2012 at 7:03

M rostamim rostamiharshit

3,8651 Huy hiệu vàng34 Huy hiệu bạc38 Huy hiệu đồng3 gold badges29 silver badges54 bronze badges

2