使用mysql_fetch_assoc并更新每条记录

时间:2014-10-05 04:10:15

标签: php mysql sql-update rows

我的一些行有一个","逗号作为该字段中的初始字符。所以我需要循环,检查每一行是否有初始的commma,如果有,则删除它,并更新行。

我正在运行以下代码,在调用更新时似乎无限循环。

当我刚刚在结束时回显结果时,浏览器中的一切看起来都很好。但是在执行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);
}

谢谢。

3 个答案:

答案 0 :(得分:2)

您应该使用WHERE子句将特定的行ID传递给您要更改的行ID:

$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 :(得分:0)

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

if($initial = ",") {

}

而不是两个用于实际比较:

if($initial == ",") {

}

答案 2 :(得分: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。