【问题标题】:Insert select MySQL with prepared statements使用准备好的语句插入选择 MySQL
【发布时间】:2015-02-26 08:14:43
【问题描述】:

我想知道我是否需要这样做。

为了更安全,所有插入数据库的东西都是从另一个表中选择的,该表带有用户发布的特定子句。

我使用 id 作为身份:

$identity = $_POST['id'];

$stmt = $mysqli->prepare ("INSERT into table_one (col_1, col_2, col_3)
         VALUES (?,?,?)");

//This is what I use to do
$stmt >bind_param ("sss", $valua, $valueb, $valuec);

//But now I want to that like this
$stmt >bind_param ("sss", SELECT valuea, valueb, valuec FROM ANOTHERtable WHERE id = $identity);

$list->execute();
$list->close();

有可能吗?正确的方法是什么?

【问题讨论】:

  • 它是一个插入选择语句,构造它然后绑定 id
  • 这就是我想知道的。 :p
  • 查看接受的答案,以它为指导,当然id现在将是一个占位符?,然后绑定它。 stackoverflow.com/questions/6091707/…
  • @alisa 是的,这就是为什么您重视正确编辑问题的原因,这样您和遇到相同问题的其他读者都会受益。无论如何要回答您关于已接受答案的问题,是的,您可以这样做,但请记住您不能再绑定它了

标签: php mysql mysqli


【解决方案1】:

您不需要绑定其他表中的值。您只需要为用户提供的值准备这些。您可以安全地使用现有值。

$stmt = $mysqli->prepare ("INSERT into table_one (col_1, col_2, col_3)
        SELECT valuea, valueb, valuec FROM ANOTHERtable WHERE id = ?");
$stmt >bind_param ("i", $identity);
$stmt->execute();

【讨论】:

  • 非常感谢。现在,如果我有一个现成的值:例如 $valuea = $_POST['valuea'];当查询可能变为:SELECT '$valuea', valueb, valuec FROM ANOTHERtable WHERE id = ?"
猜你喜欢
  • 1970-01-01
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 2017-05-23
  • 2016-03-07
相关资源
最近更新 更多