0
所以我的數據庫中有很多有問題的值。 有兩列,一個是電子郵件。有些電子郵件是以這種方式存儲的「[email protected],在起始處的引號是無用的。我希望將其轉換爲[email protected]。 同樣,還有另一個領域稱爲公司,其中有像這樣的數據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();
}
爲什麼不'str_replace'? –
你在if語句中返回true;它只會運行一次,因爲返回會終止循環。如果這不是問題 - 請添加一些調試。 SQL語句是否正在運行?它是否選取正確的條目?你的substr調用是否工作?找出哪個部分不工作。 – andrewsi
你可以刪除不必要的字符串一次在數據庫中使用MySQL'替換'功能 –