2017-05-08 33 views
1

代码:如何在php中的单个字段中插入两个变量值?

<?php 
if(isset($_POST['add_new'])) 
{ 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $phone = $_POST['phone']; 
    $field = $_POST['field']; 
    $message = $_POST['message']; 

    $comment1 =array($_POST['comment1'],$s_date); 

    $comment2 = $_POST['comment2']; 
    $status = $_POST['status']; 
    $s_date = date('Y-m-d'); 
    $interested_in = $_POST['interested_in']; 
    $academic_details = $_POST['academic_details']; 
    $city = $_POST['city']; 

    $sql = "insert into enquires2(name,email,phone,field,message,comment1,comment2,status,s_date,interested_in,academic_details,city,admin_idd)values('$name','$email','$phone','$field','$message','$comment1','$comment2','$status','$s_date','$interested_in','$academic_details','$city','$admin_id')"; 
    $result = mysqli_query($link,$sql); 
    if($result == true) 
    { 
     $msg .= "<p style='color:green;'>You are successfully add new enquiry</p>"; 
    } 
    else 
    { 
     $msg .= "<p style='color:red;'>Error!</p>"; 
    } 
} 
?> 

在该代码中,我想在单个可变即

$comment1 = array($_POST['comment1'],$s_date); 

其显示(数组)当我打印查询($ SQL)传递两个值。我如何将两个值传递给单个变量?请帮帮我。

+2

您的脚本存在[SQL注入攻击](https://stackoverflow.com/q/60174/5914775)的风险。看看[Little Bobby Tables]发生了什么事(http://bobby-tables.com/)。即使[如果你正在逃避投入,它不安全!](https://stackoverflow.com/q/36628418/5914775)。改用[准备好的参数化语句](https://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。 –

+0

'$ comment1 = $ _POST ['comment1']。“ - ”。$ s_date;' –

+1

'玫瑰红'); DROP TABLE enquires2;学会消毒,下次你的输入。对不起,只是为这篇文章增添些许味道。连接这些字符串是当前脚本的最新问题。 – briosheje

回答

0

只需使用串联

$comment1 = $_POST['comment1'] . $s_date; 

但是,如果你想以后解析和保持注释和日期之间的盲分离Blind您可以像使用

$comment1 = $_POST['comment1'] . "--date--" . $s_date; 

任何格式以后,你可以简单地使用print_r (explode("--date--",$str)); 喜欢的东西多值场。

+0

OP要求做的事实际上是毫无意义和不必要的IMO - 请参阅下面的答案,日期已记录在表格中。它也很脆弱 - 如果用户恰好在你的'--date - '加入短语中写下了一些内容(不知道他们为什么会这样做,但是他们可以),那么你将会遇到麻烦。 – ADyson

1

另一种选择,如果你不想来连接,使用序列化功能使关联数组和序列化和存储到数据库

例如:

$comment1 =serialize(array("comment"=>$_POST['comment1'],"date"=>$s_date)); 

,当你拿到表格数据库,只需使用

$data = unserialize($yourDataFromDb); 

,你会得到你的价值观像

$data["comment"] // Your comment 
$data["date"] // your date 
-1

您已经在单独的“日期”字段中记录$s_date的值,因此不需要在注释字段中再次记录它。

如果您希望稍后将它们组合用于显示或报告目的,则可以使用简单字符串连接轻松地在对象或UI层中执行此操作。我建议你而不是在你试图存储数据的时候这样做 - 否则你只是在行中重复两次相同的值而没有明显的原因,并且使得更难分离用户实际上是从你插入的日期写出来的。

+0

(不知道他们为什么会,但他们可以),所以你自己承担很多事情。存储多值字段是常见的做法,完全取决于您的选择是否要进行规范化。 – owaishanif786

+0

@ owaishanif786问大多数DBA,他们会告诉你,规范化数据是必不可少的,而不是意见。很多开发人员也会这样做。但是在这个例子中,数据_is已经被标准化了,因为日期已经存储了。因此存储_again_没有任何意义。使用UI层来控制何时显示它(以及是否将它与任何给定视图中的注释组合在一起)更灵活,并且更加正常。 DRY原则适用于此。但你当然有权利对自己的情况发表看法:-) – ADyson

+0

@ owaishanif786至于“(不知道他们为什么会,但他们可以)”,这不是一个假设,它只是一个事实的陈述这种可能性。我并没有假设用户愿意这样做,但我只是认识到这是可能的,所以选择100%的可靠性。 OTOH你的代码隐含地假定他们不会。这是_不太可能_但不是_impossible_。如果你给足够的猴子打字员,其中一个最终会写莎士比亚。我已经和最终用户合作了很长时间,知道有人总是会让你感到惊讶。最简单的做法是编写不易受此影响的代码。 – ADyson

相关问题