我正在尝试使用PDO创建一个准备好的语句,这将允许我使用从表单收集的数据创建mysql用户。 当我运行命令时,我收到错误:
SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便在'选择'选择'之后使用正确的语法。 ON' testjoke.authors' TO' corey' @' localhost''在第1行
我目前只使用我为测试创建的一些变量的数据,而不是表单中的数据。 代码如下所示:
$grantQuery = $db->prepare("GRANT ? ON ? TO ?@'localhost';");
$select = 'select';
$testjoke = 'testjoke.authors';
$pdoemail = 'corey';
$grantQuery ->execute(array(
$select,
$testjoke,
$pdoemail
));
我启用了Mysql常规日志记录,查询甚至从未显示(从未执行过)。
我一直试图找到一个解决方案,但是我没有运气。
非常感谢任何帮助。
由于 科里
答案 0 :(得分:2)
就像你不能写SELECT ? FROM ?
一样,你也不能将GRANT
划分为准备好的查询。
准备好的查询值只能是值。出于安全原因,您无法传递关键字。在您的情况下,可能的唯一参数是用户名,因为它是一个字符串。
PDO正在尝试运行:
GRANT 'select' ON 'testjoke.authors' TO 'cory':'localhost';
你可以看到为什么这不会起作用,我希望。