【问题标题】:Prepared statement select inside values() is this right way to do it? [duplicate]准备好的语句 select inside values() 这是正确的方法吗? [复制]
【发布时间】:2020-09-13 06:19:09
【问题描述】:

当您必须在通常是 values(?) 的值中运行 select stement 时,这是正确的准备语句的正确方法吗?

   function permission_table($conn, $username) {
    if($stmt = $conn->prepare("INSERT INTO perm (user_id) VALUES(SELECT id FROM users WHERE username = ?)")) {
            $stmt->bind_param("s", $username);
            $stmt->execute();
}
}

【问题讨论】:

  • 完全有效。不过,您不需要 if 条件。
  • 这个问题听起来像您收到错误消息。你能补充一下吗?可能只需要SELECT id FROM users WHERE username = ? 就足够了。

标签: php mysqli prepared-statement


【解决方案1】:

我会直接在这里使用INSERT INTO ... SELECT,没有VALUES 子句:

INSERT INTO perm (user_id)
SELECT id FROM users WHERE username = ?;

您更新的 PHP 代码:

$sql = "INSERT INTO perm (user_id) SELECT id FROM users WHERE username = ?";
if ($stmt = $conn->prepare(sql)) {
    $stmt->bind_param("s", $username);
    $stmt->execute();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-25
    • 2012-05-15
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多