php mysql在数组的sql插入中添加正斜杠

时间:2016-11-09 12:06:30

标签: php mysql

我将从表单检查的值插入到db中,但插入的值在末尾有斜杠(/)。

我从带有复选框的表单中的数组插入sql数据库,我只想插入选中的值。

插入对于所有值都是可以的,但它们最后会出现斜线,我不明白为什么会这样。

这是表格

<form role="form" method="POST" action="add_payroll.php">
<label>Employees</label><br>

<?php
// include "../includes/connect.php";
$cs = mysql_query("SELECT user_Idnum, salary, user_fname, user_lname,user_mname from tbl_user_details");

if($cs==true){
$count=mysql_num_rows($cs);
while($row=mysql_fetch_assoc($cs)){
extract($row);
echo '<input type="checkbox" name="detail_Id[]" value='.$user_Idnum.'/>'.$user_fname." ".$user_mname." ".$user_lname.'<br>';

 }
 }
?>                                       
<label>Description</label>

<textarea class="form-control" name="description"></textarea>
<label>Transaction Date</label>
<input size="16" type="text"  readonly name="transaction_date"class="form_datetime form-control">

</div>
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn dark btn-outline">Cancel</button>
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>

</form>

这是php脚本

<?php
include "../functions/connect.php";
$ids  = $_POST['detail_Id'];
$desc = $_POST['description'];
$time = $_POST['transaction_date'];

foreach ($ids as  $va) {

$run1= mysql_query("insert into tbl_payroll(detail_Id, description,     transaction_date) values('$va', '$desc', '$time' )");

                            if($run1==true)
                             {
                                echo '<script language="javascript">';
                                echo 'alert("Successfully Added")';
                                echo '</script>';
                                echo '<meta http-equiv="refresh" content="0;url=report.php" />';
                             }

    }

?>

2 个答案:

答案 0 :(得分:1)

更改

echo '<input type="checkbox" name="detail_Id[]" value='.$user_Idnum.'/>'.$user_fname." ".$user_mname." ".$user_lname.'<br>';

echo '<input type="checkbox" name="detail_Id[]" value="'.$user_Idnum.'"/>'.$user_fname." ".$user_mname." ".$user_lname.'<br>';

通过在value属性周围没有引号,该值内的任何内容都会有一个尾随斜杠连接到它的值。

您可能不应该在循环中写出javascript和元刷新 - 刷新将在循环的第一次迭代中触发,后续语句将不会被执行。

另外值得注意的是使用现已弃用的mysql函数 - 升级到mysqliPDO并使用prepared statements来防止SQL注入,这是代码容易受到攻击。

答案 1 :(得分:1)

<?php
include "../functions/connect.php";
$ids  = $_POST['detail_Id'];

if(substr($ids, -1) == '/') {
   $ids = substr($ids, 0, -1);
}

$ids = rtrim($ids,"/");

...

$desc = $_POST['description'];
$time = $_POST['transaction_date'];
.......