2016-05-09 7 views
0

Ich muss die Spalte einer Tabelle aktualisieren.Rufen Sie eine PHP-Funktion in SQL-Abfrage. Spalten aktualisieren

Ich habe folgendes:

ID | Titel | slug_name


1 | Der Gewinner ist |


2 | Schöner Tag |


Ich habe die slug_name zu aktualisieren:

ID | Titel | slug_name


1 | Der Gewinner ist | The-winner-is


2 | Schöner Tag | schöne Tage


Also habe ich eine Funktion slug()

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

und wie kann ich "Titel" in der Funktion "Slug" zurückkehren?

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

Ich habe auch versucht:

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

Aber alle Zeilen zurück die gleiche "slug_name".

Antwort

0

Sie haben einen fehlenden Parameter, um MySQL-Updates und eine bestimmte Zeile anzugeben, müssen Sie dieses Zeilenattribut angeben. Entweder die ID oder der Titel mit einem WHERE-Abschluss in Ihrer Funktion.

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

Jetzt ist es Sauber machen:

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 
} 
+0

Nach Funktion Wegschnecke() mit Ihrer Funktion ersetzen, habe ich dies fügen? '$ items = mysql_query (" SELECT title FROM table "); while ($ item = mysql_fetch_object ($ items)) { mysql_query ("UPDATE-Tabelle SET slug_name = '" .slug ($ item-> title). "'"); } ' – Erfo

+0

Ich löste, ich benutzte dieses: http://StackOverflow.com/a/20339363/2158434 – Erfo

Verwandte Themen