Php 从字符串中删除额外的引号

Php 从字符串中删除额外的引号,php,mysql,oop,Php,Mysql,Oop,所以我的数据库中有很多有问题的值。 有两个栏目,一个是电子邮件。有些电子邮件是这样存储的“foo@foobar.com,开始处的引号无效。我希望将其转换为foo@foobar.com。 类似地,还有另一个名为company的字段,其中包含类似于stackoverflow“的数据,结尾处的引号也需要删除 我已经编写了这段代码,但由于某些原因,这并没有删除引号。 我做错了什么? 欢迎提出任何建议 global $conn; try { $sta

所以我的数据库中有很多有问题的值。 有两个栏目,一个是电子邮件。有些电子邮件是这样存储的“foo@foobar.com,开始处的引号无效。我希望将其转换为foo@foobar.com。 类似地,还有另一个名为company的字段,其中包含类似于stackoverflow“的数据,结尾处的引号也需要删除

我已经编写了这段代码,但由于某些原因,这并没有删除引号。 我做错了什么? 欢迎提出任何建议

global $conn;
        try
        {
            $statement= $conn->query("SELECT * from emails");
            $statement->setFetchMode(PDO::FETCH_ASSOC);
            while($rows = $statement->fetch())
            {
                $email=$rows['emailid'];
                $company=$rows['company'];
                $len = strlen($company);
                if($email{0} == '"')
                {
                    //problem at start
                    //fix there.
                    $updated = substr($email, 1);
                    //now update
                    try
                    {
                        $statement = $conn->prepare("UPDATE emails set emailid = :email where indexid = :indexid");
                        $statement->bindParam(':email',$updated);
                        $statement->bindParam(':indexid',$row['indexid']);
                        $statement->execute();
                        $statement->closeCursor();
                        return true;
                    }
                    catch(PDOException $e)
                    {
                        echo $e->getMessage();
                    }
                }
                elseif($company{$len-1} == '"')
                {
                    $updated = substr($company, 0, -1);
                    //now update
                    try
                    {
                        $statement = $conn->prepare("UPDATE emails set company = :company where indexid = :indexid");
                        $statement->bindParam(':company',$updated);
                        $statement->bindParam(':indexid',$row['indexid']);
                        $statement->execute();
                        $statement->closeCursor();
                        return true;
                    }
                    catch(PDOException $e)
                    {
                        echo $e->getMessage();
                    }
                }
                else
                {
                    echo "";
                }
            }
        }
        catch(PDOException $e)
        {
            echo $e->getMessage();
        }
您可以使用修剪:

trim($text, " \"'");

文本
变量

的开头和结尾删除空格和引号是很重要的,为什么不干脆
str_replace
?在if语句中返回true;它只运行一次,因为返回将终止循环。如果这不是问题所在-添加一些调试。SQL语句正在运行吗?它选择了正确的条目吗?你的substr通话正常吗?找出哪个部分不起作用。您可以使用mysql
replace在数据库中一次性删除不需要的字符串function@andrewsi我从if和else中删除了return true,它工作正常。但是,它只修复一个条目一次。不会一次修复所有问题。假设有3个错误,那么我需要运行脚本3次。