如何使用逗号来获取值,','分离

时间:2016-12-27 10:13:47

标签: javascript php html mysql mysqli

我有一个文本框。我输入的格式为12 13 14。 我期待这个结果12,13,14。但错误显示 警告:在第110行的E:\ Xampp \ htdocs \ prize_bond \ admin \ index.php中为foreach()提供的参数无效。

html代码

<form action="index.php" method="post">
    <tr><td>Enter separated Values With out Comma ","</td>
    <td><input name="imp" type="text"  /></td></tr>
</form>

php代码

<?php 
    $da=$_POST['imp']; 
    $ar = implode(',',$da); 
    foreach($ar as $k) die("not in the loop"); 
    { 
        $q="insert into pb_100_fp (draw_3_fp) values ('".mysqli_real_escape_string($conn, $k)."')"; 
        $rs=mysqli_query($conn, $q); 
        echo "$k"; 
    } 
    exit; 
?>

3 个答案:

答案 0 :(得分:1)

如果您的表单字段在没有逗号的情况下请求值,那么您需要按空格explode POST数据。你现在正在做的是用逗号破解它(你不能开始破坏一个字符串),然后尝试将它传递给foreach循环。但是,foreach循环只接受数组。

$ar = explode(' ',$da); 

这个简单的改变应该为你解决。您将希望在foreach之后摆脱特殊的die()(语法无效,并且不清楚您在那里尝试做什么!),并在循环之前验证您的数据。默认情况下,如果你爆炸了一个字符串而没有找到匹配的分隔符,那么结果将是一个带有单个键的数组,你可以将它传递给一个没有问题的循环。

答案 1 :(得分:0)

您确定要让用户以该特定格式输入数据吗?如果用户使用多个空格字符,或者用逗号分隔数字,该怎么办?还是用分号?或输入字母而不是数字?无论如何..至少你可以将所有空格转换为单个空格字符,然后按照建议执行explode():

$da = trim(preg_replace('/\s+/', ' ', $_POST['imp'])); 
$ar = explode(' ', $da); 
在你的foreach()之前

答案 2 :(得分:-1)

使用explode而不是implode作为

explode()函数将字符串分解为数组。

implode()函数从数组元素返回一个字符串。

并且您无法对字符串执行foreach操作。

    $da=$_POST['imp']; 
    $ar = explode(' ',$da);
    foreach($ar as $k)
    {
        $q="insert into pb_100_fp (draw_3_fp) values ('".mysqli_real_escape_string($conn, $k)."')"; 
        $rs=mysqli_query($conn, $q); 
        echo $k.","; 
    } 

然后你会得到这个输出

o/p : 12,13,14,