Makary155 Opublikowano 30 Kwietnia 2012 Udostępnij Opublikowano 30 Kwietnia 2012 Mam tabelę która ma bardzo dużo kolumn. Teraz chcę zrobic kopię jednego rekordu zmieniając wartość tylko dwóch pól. Pierwsze pole ma primary key i nie może być skopiowane. Dałoby radę jakoś krócej niż: INSERT INTO table SELECT NULL, "tu wartość którą chce zmienić", "tu inna wartość jaką chce zmienić", pole3, pole4, pole5...poleX where cośtam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 1 Maja 2012 Udostępnij Opublikowano 1 Maja 2012 Raczej nie. Jedyne inne rozwiązanie które widzę to wrzucić wartości do tablicy i wtedy for'em uzupełnić ten kod, ale to na to samo wyjdzie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Maja 2012 Administratorzy Udostępnij Opublikowano 1 Maja 2012 Spróbuj tak: w phpmy adminie co prawda powoduje to wyswietlanie dwóch kolumn o tej samej nazwie... ale moze zadziała. INSERT INTO table SELECT *, NULL as pole0, "tu wartość którą chce zmienić" as pole1, "tu inna wartość jaką chce zmienić" as pole2 where cośtam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 2 Maja 2012 Autor Udostępnij Opublikowano 2 Maja 2012 Spróbuj tak: w phpmy adminie co prawda powoduje to wyswietlanie dwóch kolumn o tej samej nazwie... ale moze zadziała. INSERT INTO table SELECT *, NULL as pole0, "tu wartość którą chce zmienić" as pole1, "tu inna wartość jaką chce zmienić" as pole2 where cośtam Mysql workbench wyświetla errora w tym zapytaniu. Na necie znalazłem coś takiego: function DuplicateMySQLRecord ($table, $key_field, $key_value) { // Get the names of all fields/columns in the table $query = 'SHOW COLUMNS FROM ' . $table . ';'; $results = mysql_query($query); // Generate the duplication query with those fields except the key $query = 'INSERT INTO ' . $table . ' (SELECT '; while ($row = mysql_fetch_array($results)) { if ($row[0] == $key_field) { $query .= 'NULL, '; } else { $query .= $row[0] . ', '; } // END IF } // END WHILE $query = substr($query, 0, strlen($query) - 2); $query .= ' FROM ' . $table . ' WHERE ' . $key_field . ' = "' . $key_value . '")'; mysql_query($query); // Return the new id $new_id = mysql_insert_id(); return $new_id; } http://www.epigroove.com/posts/79/how_to_d...mysql_using_php Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Maja 2012 Administratorzy Udostępnij Opublikowano 2 Maja 2012 Bo zjadłem FROM, to chyba widać. Myslalem, ze chcesz sobie to zrobić samym SQLem, z pomoca PHPa to z palcem w dupsztalu sie robi: <?php $result = mysql_query("SELECT * FROM tabela WHERE kolumna = 1"); $row = mysql_fetch_assoc($result); unset($row['kolumna']); //taka sama nazwa jak po WHERE $row['pole1'] = 'wartosc'; //podmieniamy // zabezpieczamy foreach ($row as $k => $v){ $row[$k]='\'' . mysql_real_escape_string($v) . '\''; } mysql_query("INSERT INTO (" . implode(', ', array_keys($row)) .") VALUES (" . implode(', ', array_values($row)) .");"); A korzystając z Active Recordów jakiejś prostej biblioteki do bazy danych to już w ogóle kaszka z mleczkiem, dziś się już mysql_query nie uzywa. Zend_DB, Propel, Doctrine, Redbean czy wbudowane w frameworki rozwiazania, które obsługują PDO i rekordy jako obiekty. Szybciej i sprawniej na modelach sie pracuje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 3 Maja 2012 Autor Udostępnij Opublikowano 3 Maja 2012 Wywalało nawet gdy wstawiałem FROM :) Możesz mi wyjaśnić czemu dałeś tutaj unset? Nie bardzo widzę dlaczego Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Maja 2012 Administratorzy Udostępnij Opublikowano 3 Maja 2012 żeby nie robić NULL dla tego pola. Zamiast kolumna u ciebie jest pewnie id. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się