2017-06-13 72 views
0

我试图将数据插入到合规表,该列名为auditee这不是主键。检索来自特定列的特定数据

所以数据录入后。我想根据“受审核方”检索数据

我应该在MySQL中插入数据到多个表(合规表& auditee_details表)还是任何想法?

<?php 
// Create connection 
$con=mysqli_connect("localhost","root","","mtt_iem"); 

// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
$a = $_POST['date']; 
$b = $_POST['block']; 
$c = $_POST['module']; 
$d = $_POST['auditor']; 
$e = $_POST['sw_score']; 
$f = $_POST['sw_comment']; 
$g = $_POST['dm_score']; 
$h = $_POST['dm_comment']; 
$i = $_POST['uniform_score']; 
$j = $_POST['uniform_comment']; 
$k = $_POST['totalscore']; 
$l = $_POST['auditorcomment']; 
$m = $_POST['auditee']; 

$sql = "INSERT INTO compliance_module 



(date,block,module,auditor,sw_score,sw_comment,dm_score,dm_comment,uniform_score,uniform_comment,totalscore,auditorcomment,auditee) ". 

"VALUES ('$a','$b','$c','$d','$e','$f','$g','$h','$i','$j','$k','$l','$m')"; 

$result = mysqli_query($con,$sql); 
?> 
+2

您的代码容易受到SQL注入,就需要解决这个问题。 – Enstage

+0

好像你所要求的是:'select * from compliance_module WHERE auditee ='foo'' – rtfm

+0

你需要使用mysqli_escape来转义你的数据值(或者更好地使用参数化查询)。否则,人们可以将SQL发布到您的表单并窃取您的数据/破坏您的数据库。另外,使用$ a,$ b,$ c等等是不必要的,只会让你的代码感到困惑和冗长。如果你想(但不需要,你需要首先转义它),你可以在字符串中使用$ _POST [auditee](当你在一个字符串中使用它的时候没有引号)。 – Cuagau

回答

0

如果你想存储有关被审计单位的其他信息,以及一个被审计单位可以有多个compliance_modules,那么你将要创建一个单独的受审核方表的auditee_id,并在compliance_modules表使用audite_id场参考您所属的auditee_id。

如果表中都将有大量的记录,你会被审计单位进行查找模块,你将要创建该值的指标,这将使级搜索订单更快:

CREATE INDEX compliance_modules_auditee_id ON compliance_modules(auditee_id) 

然后,你可以做

SELECT * FROM compliance_modules WHERE auditee_id = 'foo' 
+0

是的,一个被审核方可以有多个compliance_modules。所以在compliance_modules表中,我需要一个auditee_id列?不仅仅是被审核方?那么auditee表中的auditee_id是主键吗? @Cuagau – FAR