解析一串逗号和数字

时间:2011-05-06 16:36:46

标签: php mysql ajax validation

我发现了一个不错的jQuery插件。它将数据作为1202,39,2393,29,1,39

发送到php服务器

我想从帖子中获取数据,我知道如何做到这一点。

我的想法是将1202,39,2393,29,1,39放在一个字符串中。然后一些如何循环通过它。

所以我会放入$string = '1202,39,2393,29,1,39'; 输出类似于

 1202<br>
    39<br>
    2393<br>
    29<br>
    1<br>
    39<br>

对于循环中的每个ID,我会检查它是否是有效的ID。我知道如果存在某些东西,如何检查MySql。我不确定的部分是从字符串中循环获取每个id,然后用它做一些事情。这似乎很难解释,我希望我很清楚。

5 个答案:

答案 0 :(得分:4)

你不应该循环运行SQL查询,所以我说你根本不应该explode()(其他人建议的)。这是一种非常糟糕的做法,因为如果您有 20个ID ,则意味着 20个数据库调用,这是非常低效的。应尽可能减少数据库调用,因为它们很昂贵。

我会运行一个查询,返回数据库中的ID。

您的查询将类似

 select id from table where id in (YOUR_STRING_ESCAPED)

请务必首先使用$string转义mysql_real_escape_string() {/ 1}}。

从查询返回的ID是可以安全输出的ID。

答案 1 :(得分:2)

要将字符串分成单独的部分,请使用explode

$string = '1202,39,2393,29,1,39'; 
$list = explode(",", $string);

然后你可以用数组做任何你想做的事,例如

foreach ($list as $item)
{
    print $item."<br>";
}

答案 2 :(得分:1)

首先使用explode()创建一个数组:

$string = '1202,39,2393,29,1,39';
$array= explode(",", $string);

然后使用foreach循环进行检查:

foreach ($array as &$value) {
    if($value == etc.....//perform your checks here.
}

答案 3 :(得分:0)

$string = '1202,39,2393,29,1,39';
$array = explode(',', $string);
for($i=0;$i<count($array);$i++) {
    $sql = "CHECK FOR VALID ID WHERE id=" . $array[$i];
}

这应该让所有这些id都可以通过sql单独检查。

答案 4 :(得分:0)

假设您使用的是PHP:

$string = '1202,39,2393,29,1,39';
$data = explode(",", $string);
echo "<pre>"; print_r($data); echo "</pre>"

// Outputs:
// Array
// (
//     [0] => 1202
//     [1] => 39
//     [2] => 2393
//     [3] => 29
//     [4] => 1
//     [5] => 39
// )

// Then you can iterate through the array
foreach ($data AS $value) {
  // Validate the $value
}