将PHP变量传递给SQL查询

时间:2012-09-07 06:57:48

标签: php mysql 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)');

这是从post请求中获取userlogin然后将其插入我的SQL查询的正确方法吗?

7 个答案:

答案 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)

我认为你想INSERT而不是Update。为什么field = field + ($userlogin)?这将连接值。还有一件事请使用 PDO MYSQLI

使用PDO扩展的示例:

<?php

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

?>