$user = mysql_real_escape_string($_POST["userlogin"]);
mysql_connect("uritomyhost","myusername","password");
mysql_select_db('mydatabase');
mysql_query('UPDATE table SET field = field + ($userlogin)');
这是从post请求中获取userlogin然后将其插入我的SQL查询的正确方法吗?
答案 0 :(得分:5)
停止使用过时的功能并改用PDO。
$stmt = PDO::prepare('UPDATE table SET field = field + :field');
$stmt->execute(array('field' => $_POST["userlogin"]));
阅读一些information about PDO。 简而言之:它为您逃脱了数据,在数据库中非常一致,而且通常更容易。
答案 1 :(得分:0)
在mysql连接后使用mysql_real_escape_string()
使用双引号
mysql_query("UPDATE table SET field = field + ({$userlogin})");
答案 2 :(得分:0)
你应该在连接数据库之后使用mysql_real_scape_string()... 所以将代码更改为:
mysql_connect("uritomyhost","myusername","password");
mysql_select_db('mydatabase');
$userlogin = mysql_real_escape_string($_POST["userlogin"]);
mysql_query("UPDATE table SET field = '$userlogin'");
答案 3 :(得分:0)
试试这样。
$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'");
答案 4 :(得分:0)
使用mysqli_query
查询(请注意 i )并使用预准备语句。使用预准备语句比使用直接查询并在查询字符串中包含变量更安全。而且,mysql很快就会被弃用。示例:
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* create a prepared statement */
if ($stmt = $mysqli->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();
?>
答案 5 :(得分:0)
试试这个
mysql_query("UPDATE table SET field = field + ('$user')");
然而,
您可能正在更新表格中的所有字段,因为您的UPDATE
子句中没有位置
不应该是
mysql_query("UPDATE table SET field = field WHERE user= '$user'");
答案 6 :(得分:0)