Php 使用其他外部/已发布变量插入select查询结果中的数据
如何在一个插入查询中插入查询结果和其他变量中的数据 样本:Php 使用其他外部/已发布变量插入select查询结果中的数据,php,sql,pdo,Php,Sql,Pdo,如何在一个插入查询中插入查询结果和其他变量中的数据 样本: $id = $_POST['id']; $address = $_POST['address']; $email = $_POST['email']; $query = "INSERT INTO info_table(fname, lname, address, email) VALUES (SELECT fname, lname, FROM info WHERE id = '$id')"; $result = db-&g
$id = $_POST['id'];
$address = $_POST['address'];
$email = $_POST['email'];
$query = "INSERT INTO info_table(fname, lname, address, email) VALUES (SELECT fname, lname, FROM info WHERE id = '$id')";
$result = db->prepare($query);
$result->execute();
如何将
$address
和$email
与选择的结果变量一起插入 准确回答您的问题:
$query = "INSERT INTO MyInsecureTable (fname, lname, address, email) SELECT fname, lname, '$address', '$email' FROM info WHERE id = '$id'";
但这是令人恐惧的。从我这里出来。准确回答您的问题:
$query = "INSERT INTO MyInsecureTable (fname, lname, address, email) SELECT fname, lname, '$address', '$email' FROM info WHERE id = '$id'";
但这是令人恐惧的。从我这里出来。这应该可以解决查询的问题:
插入信息表(
fname,
名字,
地址:,
电子邮件
)
挑选
fname,
名字,
“:地址”,
“:电子邮件”
从…起
信息
哪里
id=':id'
你没有在这里使用prepare。您确实应该绑定到参数:address
,:email
和:id
$result=db->prepare($query);
$result->bindParam(':id',$id,PDO::PARAM_STR);
$result->bindParam(':email',$email,PDO::PARAM_STR);
$result->bindParam(':address',$address,PDO::PARAM_STR);
$result->execute();
这应该可以实现查询的技巧:
插入信息表(
fname,
名字,
地址:,
电子邮件
)
挑选
fname,
名字,
“:地址”,
“:电子邮件”
从…起
信息
哪里
id=':id'
你没有在这里使用prepare。您确实应该绑定到参数:address
,:email
和:id
$result=db->prepare($query);
$result->bindParam(':id',$id,PDO::PARAM_STR);
$result->bindParam(':email',$email,PDO::PARAM_STR);
$result->bindParam(':address',$address,PDO::PARAM_STR);
$result->execute();
你应该验证那些帖子,使用htmlspecialchars如下:htmlspecialchars($\u POST['id',ENT\u引号)
等等。这是针对SQL注入和其他邪恶的东西的。虽然我同意你应该对外部数据使用某种特定于应用程序的过滤器,但htmlspecialchars()在echo之前是有意义的,但不是在插入数据库之前。PHP filter_var()是您的朋友。因为他正在准备语句,所以不需要进行任何过滤。他只需要正确地准备语句。你应该验证那些帖子,像这样使用htmlspecialchars:htmlspecialchars($\u POST['id',ENT_QUOTES)
等等。这是针对SQL注入和其他邪恶的东西的。我同意你应该对外部数据使用某种特定于应用程序的过滤器,htmlspecialchars()在echo之前有意义,但在插入数据库之前没有意义。PHP filter_var()是您的朋友。因为他正在准备语句,所以不需要进行任何过滤。他只需要正确地准备语句,你的代码是不安全的,容易出现SQL注入和简单的mysql错误。关于转义sql参数,请参阅其他文章,正确使用PDO etcYour代码是不安全的,并且容易出现sql注入和简单的mysql错误。有关转义sql参数、PDO etcDo的正确用法,请参阅其他文章INSERT语句需要表名吗?INSERT语句需要表名吗?