Varför kör du inte istället:
INSERT INTO Ny (A, B, C, X, E, F)
SELECT A, B, C, X, E, F FROM Old ORDER BY id ASC
5 svar · 563 visningar · startad av aasah
Ursäkta rubriken... men det känns så!
Jag försöker flytta vissa värden från en gammal tabell till en ny med följande kod: (Och ja, en kolumn i ny heter något bättre än i old. Detta är dock inte skälet till förflyttningen.)
$old = "SELECT A, B, C, D, E, F FROM Old ORDER BY id ASC";
$oldRes = mysql_query($old) or die(mysql_error());
while ($row = mysql_fetch_array($oldRes, MYSQL_ASSOC)) {
foreach($row as $i=>$v) {
$row[$i] = addslashes($v);
echo "$row[$i]<br>";
}
$ins = "INSERT INTO Ny (A, B, C, X, E, F)
VALUES('".$oldRes['A']."', '".$oldRes['B']."', '".$oldRes['C']."',
".$oldRes['D'].", ".$oldRes['E'].", ".$oldRes['F'].")";
echo "$ins<br>";
mysql_query($ins) or die($ins."<br>".mysql_error());
}
Detta ger följande utskrift:
Felmeddelande skrev:
ui=62101
i166
POA
4
1
12 <--- så här långt är det ur foreach
INSERT INTO Ny (A, B, C, X, E, F) VALUES('', '', '', , , ) <---- echo $ins
INSERT INTO Ny (A, B, C, X, E, F) VALUES('', '', '', , , )
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 1
Sista meddelandet är från mysql_error. Va? Vart ända in i... tar mina fina värden vägen??? Vad är det jag inte ser?
Varför kör du inte istället:
INSERT INTO Ny (A, B, C, X, E, F)
SELECT A, B, C, X, E, F FROM Old ORDER BY id ASC
Gein skrev:
Varför kör du inte istället:
INSERT INTO Ny (A, B, C, X, E, F) SELECT A, B, C, X, E, F FROM Old ORDER BY id ASC
Jaaa du, bra fråga! För att jag inte tänkte mig för...
Finns det för övrigt något sätt att göra detta direkt från phpmyadmin? Det vore ju ännu smidigare...
Javisst, det är bara köra SQL-kommandot i phpMyAdmin.
Ja, kom på att det måste funka med det kortare sättet att skriva... Ännu ett skäl att använda det! Tack, Gein!