我想创建一个简单的PHP脚本来创建和分配给SQL用户的属性。查询工作正常,如果没有参数使用,但失败,否则。创建用户失败Mysqli准备语句
做工精细
$conn = new mysqli('127.0.0.1', 'root', 'pass');
$sql = "CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'";
$stmt = $conn->prepare($sql);
$stmt->execute();
两个用户名和密码?
$conn = new mysqli('127.0.0.1', 'root', 'pass');
$sql = "CREATE USER '?'@'localhost' IDENTIFIED BY '?'";
$stmt = $conn->prepare($sql);
$uname = "carn";
$pass = "pass";
$stmt->bind_param('ss', $uname, $pass);
$stmt->execute();
两个用户名和密码都在语法?
$conn = new mysqli('127.0.0.1', 'root', 'pass');
$sql = 'CREATE USER "?"@"localhost" IDENTIFIED BY "?"';
$stmt = $conn->prepare($sql);
$uname = "carn";
$pass = "pass";
$stmt->bind_param('ss', $uname, $pass);
$stmt->execute();
错误,请检查文档
$conn = new mysqli('127.0.0.1', 'root', 'pass');
$sql = "CREATE USER [email protected]'localhost' IDENTIFIED BY ?";
$stmt = $conn->prepare($sql);
$uname = "carn";
$pass = "pass";
$stmt->bind_param('ss', $uname, $pass);
$stmt->execute();
错误语法,检查文件
$conn = new mysqli('127.0.0.1', 'root', 'pass');
$sql = "CREATE USER `?`@'localhost' IDENTIFIED BY `?`";
$stmt = $conn->prepare($sql);
$uname = "carn";
$pass = "pass";
$stmt->bind_param('ss', $uname, $pass);
$stmt->execute();
我不知道在哪里可以从这里走。这可能是我使用引号的一个问题,我在这里看到两个相关的问题,但没有一个回答正确。
@ Fred-ii-我说这可能是一个问题,不是我确定的。我尝试了所有我能想到的组合,对于所有其他查询,我从不用任何东西来包装'?',它工作正常,但是'bind_param()'失败。 – aron9forever
*“可能”*? - 更像“是”。据我所知,占位符不能有引号和/或剔号。 –
像CREATE TABLE这样的DDL语句不适用于参数。 'CREATE USER'可能是一样的。 – JimmyB