爆炸不';t从数据库中的值中删除逗号


Explode doesn't remove comma from value in database

我在数据库字段中有一个值,它的名称后面有,,类似于file.pdf,。我试图用爆炸删除它,但当我试图从数据库中的此行读取并生成pdf时,我遇到了错误FPDF error: Unable to find pointer to xref table。。。如果我从phpmyadmin中手动删除逗号,一切都会很好地工作。这是我试图爆炸的源头的碎片。。。

    foreach($files as $file) {
    $sql = "SELECT file FROM documents WHERE id = :id"; 
    $result = $pdo->prepare($sql);
    $result->bindParam(":id", $file);
    $result->execute();                 
    $resArray = $result->fetchAll();
    foreach ( $resArray as $res )
    {
         $items = explode(',', $res["file"]);
         foreach ($items as $item) {
           $pdf->addPDF($fileFolder.$item);             
         }  
        }           
}

这将删除最后一个","。

$item = rtrim($res["file"], ",");
$pdf->addPDF($fileFolder.$item);

此处的文档:http://php.net/manual/es/function.rtrim.php

而不是:

$items = explode(',', $res["file"]);

此代码不删除逗号,而是使用逗号作为分隔符将字符串拆分为多个部分。因此,您有效地获得了两个字符串:一个是file.pdf,另一个是空字符串(因为逗号后面的部分什么都不是),并且您正在使用foreach对这两个字符串进行迭代,因此您调用了addPDF两次,一次是用空字符串(这可能是导致错误的原因)。

你需要的是:

foreach ( $resArray as $res )
{
     $pdf->addPDF($fileFolder . rtrim($res["file"], ","));
}

这里使用rtrim来明确删除尾随字符(这里是逗号)。

使用rtrim($res["file"],",")删除最后一个逗号