2016-05-09 20 views
0

テーブルの列を更新する必要があります。SQLクエリでphp関数を呼び出します。列を更新する

私はこれを持っています:

ID |タイトル|スラグ名


1 |勝者は|


2 |美しい日| |

ID:


私はslug_nameを更新しましたタイトル|スラグ名


1 |勝者は|優勝者は


2 |美しい日|美しい日


だから私は、関数にslug()

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

を作成し、どのように私は、関数内の「タイトル」「スラグ」を返すことができますか?

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" を返します。

答えて

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

をした後、あなたの関数と関数スラグを()を置き換える、私はこれを貼り付けましたか? '$ items = mysql_query(" SELECTタイトルFROMテーブル ");while($ item = mysql_fetch_object($ items)){ mysql_query( "UPDATE table SET slug_name = '" .slug($ item-> title)。 "'"); } ' – Erfo

+0

解決済み、私はこれを使用しました:http://stackoverflow.com/a/20339363/2158434 – Erfo

関連する問題