您好我正在尝试在php表单上构建一个查找字段。
该应用程序是一个多公司数据库,在这种情况下,我正在尝试构建一个文档注册表,稍后我将设置它,以便只有公司可以看到自己的文档等。
过去我总是有一个模板表,其中包含所有常见的文档类型,例如:策略,过程等,然后有一个客户端文档类型表,当添加一个新客户端时,它将复制主表中的数据并帮助他们构建自己的数据,这样在添加文档时,文档类型查找会只是指着他们自己的桌子。
我现在正试图变得有点聪明并设置一个查找字段,选择公司FK是否等于0,或者他们登录的公司PK,为了进一步说明,公司0是我正在使用的作为基线数据,我有一个会话变量,用于捕获登录用户的公司PK,因此理论上,组合可以生成一个列表,从0或该特定公司添加的任何内容中查找通用数据。
这是我目前申请中的代码:
SELECT
DocumentTypePk,
CompanyFk,
DocumentType,
AddedBy
FROM TemplateDocumentType
WHERE (CompanyFk=0 OR CompanyFk="{$_SESSION['Company']}")
请注意,这不是PHP注入,它是实际的MySQL数据库,就像尝试从PHPmy Admin运行它一样。我很满意使用php在mysql等中更新/插入的概念,例如: “ '会话[' 无论 ']'”
但是这个问题似乎是另一种方式,我无法让mysql数据库采用php会话变量。
这是可能的,我错过了什么,还是有另一种方式?
运行实际表单时我没有收到任何错误,但它只是返回表中的所有内容。
提前致谢
答案 0 :(得分:0)
我假设错误的引号是问题所在。
当您尝试将变量注入字符串时,请确保使用正确的引号。
如果我们发现您正在使用MYSQLI或PDO ,那么这个答案将会改变
$sql = 'SELECT
DocumentTypePk,
CompanyFk,
DocumentType,
AddedBy
FROM TemplateDocumentType
WHERE (CompanyFk=0 OR CompanyFk="' . $_SESSION['Company'] . '")';
或
$sql = "SELECT
DocumentTypePk,
CompanyFk,
DocumentType,
AddedBy
FROM TemplateDocumentType
WHERE (CompanyFk=0 OR CompanyFk=\"{$_SESSION['Company']}\")";
或
$sql = <<<SQLSTATEMENT
SELECT
DocumentTypePk,
CompanyFk,
DocumentType,
AddedBy
FROM TemplateDocumentType
WHERE (CompanyFk=0 OR CompanyFk="{$_SESSION['Company']}")
SQLSTATEMENT;