Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用其他外部/已发布变量插入select查询结果中的数据_Php_Sql_Pdo - Fatal编程技术网

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语句需要表名吗?