回想一下sql查询中的php函数。更新列

时间:2016-05-09 18:11:05

标签: sql

我需要更新表的列。

我有这个:

ID |标题| slug_name

1 |获胜者是|

2 |美好的一天|

我要更新slug_name:

ID |标题| slug_name

1 |获胜者是|的优胜者,是

2 |美好的一天|美丽天

所以我创建了一个函数slug()

function slug($str) {
    return strtolower(trim(preg_replace('/[^a-zA-Z0-9]+/', '-', $str), '-'));
}

如何返回" title"在函数" slug"?

mysql_query("UPDATE table SET slug_name = '".slug(???title???)."'");

我也试过了:

$items = mysql_query("SELECT title FROM table");
while($item = mysql_fetch_object($items)) {
    mysql_query("UPDATE table SET slug_name = '".slug($item->title)."'");
}

但所有行都返回相同的" slug_name"。

1 个答案:

答案 0 :(得分:0)

你有一个缺少的参数,为了MySQL更新和特定的行,你需要指定那个行属性你的函数中带有WHERE闭包的ID或标题。

    function slug($str) {
    return "UPDATE table SET slug_name ='" . strtolower(trim(preg_replace('/[^a-zA-Z0-9]+/', '-', $str), '-')) . "' WHERE title ='" . $str . "'";
}

现在让它干净:

   function slug($str) {
    $new_string  = "UPDATE table SET slug_name ='";
    $new_string .= strtolower(trim(preg_replace('/[^a-zA-Z0-9]+/', '-', $str), '-'));
    $new_string .=  "' WHERE title ='" . $str . "'";
    return $new_str
}