SQLSTATE [42804]:数据类型不匹配:7错误:WHERE的参数必须为 输入布尔值,而不输入整数LINE 1
$sql = "SELECT mod_modulegroupcode, mod_modulegroupname FROM module "
. " WHERE 1 GROUP BY `mod_modulegroupcode` "
. " ORDER BY `mod_modulegrouporder` ASC, `mod_moduleorder` ASC ";
$stmt = $DB->prepare($sql);
$stmt->execute();
$commonModules = $stmt->fetchAll();
$sql = "SELECT mod_modulegroupcode, mod_modulegroupname, mod_modulepagename, mod_modulecode, mod_modulename FROM module "
. " WHERE 1 "
. " ORDER BY `mod_modulegrouporder` ASC, `mod_moduleorder` ASC ";
$stmt = $DB->prepare($sql);
$stmt->execute();
$allModules = $stmt->fetchAll();
$sql = "SELECT rr_modulecode, rr_create, rr_edit, rr_delete, rr_view FROM role_rights "
. " WHERE rr_rolecode = :rc "
. " ORDER BY `rr_modulecode` ASC ";
$stmt = $DB->prepare($sql);
$stmt->bindValue(":rc", $_SESSION["rolecode"]);
$stmt->execute();
$userRights = $stmt->fetchAll();
答案 0 :(得分:0)
您将收到数据类型不匹配错误,因为SQL语句的where
子句希望您提供条件,而不是整数值。您的第三个查询的where
子句有一个条件,但是前两个查询仅尝试给出一个整数值。 1
在某些编程语言中被视为“ true”,但是SQL并不是其中的一种。
鉴于您正在将SQL与代码组装在一起,如果没有条件可提供where
子句,则只需将where
子句排除在外,就像这样:
$sql = "SELECT mod_modulegroupcode, mod_modulegroupname FROM module "
. " GROUP BY `mod_modulegroupcode` "
. " ORDER BY `mod_modulegrouporder` ASC, `mod_moduleorder` ASC ";
但是,由于mod_modulegroupname
未聚合,您将遇到问题。由于您没有进行任何汇总,因此我建议也删除GROUP BY
子句。您还应该消除order by
中的反引号。这会让您:
$sql = "SELECT mod_modulegroupcode, mod_modulegroupname FROM module "
. " ORDER BY mod_modulegrouporder ASC, mod_moduleorder ASC ";
如果我可以这么说,听起来您应该做一个SQL教程。