-1

我正在使用 $_POST 从表单页面中提取 MySQL 查询。上一页正在发送来自数据库的 ID 列表。但是,当我使用 implode 时,它​​会回显一个字符串:

2210222022362244

即使我使用的是 Implode 函数:

$variable = implode(',' ,$_POST['job_ids']);
echo $variable

我也尝试过这种变化:

$variable = implode(',' ,(array)$_POST['job_ids']);
echo $variable

但是,这会回显相同的字符串。我还尝试了一个“get”,它产生了这个 URL 字符串,它产生了相同的:“2210222022362244”字符串:

testing.php?job_ids%5B%5D=%0D%0A%09%09%09%09%09++%09%09%0D%0A%09%09%09%09%09++%09%092210222022362244 %09%09%09%09%09++%09%09%0D%0A%09%09%09%09%09++%09%09&supervisorid=58

我正在寻找的输出是:

2210,2220,2236,2244

我想将这些值存储在一个变量中,然后在 MySQL 更新查询中使用它们。我假设这意味着我从上一页发送的数组有问题。我在该页面上使用的代码在这里:

<form action="testing.php" method="post">
<input type="hidden" name="job_ids[]" value="

<?php
$senditbaby=0;

while ($senditbaby < $num)                      
{
$senditbabyID=mysql_result($result,$senditbaby,"job_id");                       
echo $senditbabyID;                     
$senditbaby++;
}

?>
">

<div class="modal-footer">
<input type="submit" class="btn btn-primary" value="Approve all tickets">
</div></form>

非常感谢您的帮助!

4

5 回答 5

1

你真的为一个简单的错误写了一个很长的问题:你错过了输出逗号,所以没有。

但是我的建议是:首先收集数据,然后关心输出:

function get_job_ids_array($num, $result)
{
    $ids = array();
    $senditbaby = 0;

    while ($senditbaby < $num)                      
    {
         $senditbabyID = mysql_result($result, $senditbaby, "job_id");
         $ids[] = $senditbabyID;
         $senditbaby++;
    }

    return $ids;
}

并获得逗号分隔的列表:

echo implode(', ', get_job_ids_array($num, $result));
于 2013-01-24T17:28:44.417 回答
1

是只有一个job_ids[]输入,所以 中只有一个值$_POST['job_ids']。因此,没有什么可以内爆的。您在其中创建值的循环job_ids[]只是在一个接一个地回显这些值,而不是以任何方式将它们拆分。

于 2013-01-24T17:24:02.420 回答
1

尝试这个:

$variable = implode(',', str_split($_POST['job_ids'], 4));
echo $variable
于 2013-01-24T17:26:16.657 回答
0

您可以使用GROUP_CONCAT在单个查询中获取逗号分隔的 job_ids。这种方式有助于避免内爆和多重查询。

于 2013-01-24T17:49:36.443 回答
0

当您手动解码输入时,它确实是“2210222022362244”,没有任何分隔符。所以没有办法告诉你的数字在输入中彼此分开。如果每个数字都是四位数字,那么您需要为此编写特定的代码,因为这是 php 无法猜测的。

此外,php 将 $_POST['job_ids'] 视为字符串,您需要先将其分解为数组。这仅仅是因为没有通过 HTTP 直接传输数组的概念。

也许只是示例中的一个错误:您使用 $_POST,但示例 url 使用 GET,因此您实际上需要 $_GET['job_ids']

于 2013-01-24T17:24:50.903 回答