我正在使用$ _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>
非常感谢您的帮助!
答案 0 :(得分:1)
只有一个job_ids[]
输入,因此$_POST['job_ids']
中只有一个值。因此没有什么可以崩溃的。你为job_ids[]
创建值的循环只是在一个接一个地回显出值,而不是以任何方式将它们分开。
答案 1 :(得分:1)
试试这个:
$variable = implode(',', str_split($_POST['job_ids'], 4));
echo $variable
答案 2 :(得分: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));
答案 3 :(得分:0)
手动解码输入时,确实是“2210222022362244”,没有任何分隔符。所以没有办法在输入中告诉你的数字。如果每个数字都是四位数,那么你需要为这个事实编写特定的代码,因为这是php无法猜到的。
此外,php将$ _POST ['job_ids']视为String,您需要先将其分解为数组。这只是因为没有通过HTTP直接传输数组的概念。
可能只是示例中的错误:您使用$ _POST,但示例网址使用GET,因此您实际上需要$ _GET ['job_ids']
答案 4 :(得分:0)
您可以使用GROUP_CONCAT在单个查询中获取逗号分隔的job_id。这种方式有助于避免内爆和多次查询。