2014-10-05 48 views
0

我的一些行在该字段中具有“,”逗号作为初始字符。所以我需要循环,检查每一行是否有最初的commma,如果有,则删除它,然后更新该行。使用mysql_fetch_assoc并更新每条记录

我正在运行下面的代码,当更新被调用时,这段代码似乎进入无限循环。

当我只是在最后回应结果时,浏览器中的所有内容都很正常。但是在echo下执行更新行时,似乎每个记录都会填充“标签”列中的单个数据,而不是仅包含我正在删除的初始commma的行。

很想帮助:)

$query = mysql_query("SELECT Tags FROM products") 
    or die (mysql_error()); 

while ($row = mysql_fetch_assoc($query)) 
{ 
    $str = $row['Tags']; 
    $initial = substr($str,0,1); 

if ($initial = ",") { 
     $str = (ltrim($str, ',')); 
    } 

    echo "result: " .$str . "<br/>"; 
    $result = "UPDATE products SET Tags = '" .$str ."'"; 
    mysql_query($result); 
} 

谢谢。

回答

0

你是if()语句中有错误。
您使用一个平等的:

if($initial = ",") { 

} 

相反的两个用于实际的比较:

if($initial == ",") { 

} 
2

您应该通过特定的行ID你是要修改的一个,通过使用WHERE条款:

$query = mysql_query("SELECT Tags FROM products") 
    or die (mysql_error()); 

while ($row = mysql_fetch_assoc($query)) { 
    $str = $row['Tags']; 
    $initial = substr($str,0,1); 

    if ($initial == ",") { 
     // == not = 
     $str = (ltrim($str, ',')); 
    } 

    $id = $row['id']; 
    echo "result: " .$str . "<br/>"; 
    $result = "UPDATE products SET Tags = '$str' WHERE id = $id"; 
    mysql_query($result); 
} 

顺便说一句,如果可能的话亲切地换到更好的延伸范围的mysqli或PDO来代替。

+1

现在,这是一个更好的描述:)谢谢弗雷德 – Ghost 2014-10-05 04:22:10

+0

不客气。 – 2014-10-05 04:23:14

+0

谢谢。我在浏览器中收到错误 - “未定义的索引:ID”。那是因为数组是联想的吗? – Kailas 2014-10-05 05:04:34

0

以下是完整的代码。谢谢大家。

$query = mysql_query("SELECT ProductID, Tags FROM products") 
    or die (mysql_error()); 

while ($row = mysql_fetch_assoc($query)) { 
    $str = $row['Tags']; 
    $initial = substr($str,0,1); 

    if ($initial == ",") { 
     $str = (ltrim($str, ',')); 

     $id = $row['ProductID']; 
     //echo $id . " "; 
     //echo $str . "<br/>"; 
    $result = "UPDATE products SET Tags = '$str' WHERE ProductID = $id"; 
     echo $result ."<br>"; 
     mysql_query($result); 
    } 
} 

非常感谢您的帮助。我也会更新到mysqlli。