Scripts
mijn manier om een mysql tabel te ordenen
met dit script kun je makkelijk een mysql tabel orderen op basis van de primary key als voorbeeld: if(!order($mysqli, "users", $error)){ echo "Error: $error"; } dit zal de tabel "users" op de primary key sorteren, en true, of false returnen als het gelukt of mislukt is, ook zal het als je $error zet, de fout opslaan in de variabele $error ik had dit script nodig omdat ik bijvoorbeeld in een log script veel logs verwijder (er komen soms per dag 100 erbij) met als volgt dat je database er uiteindelijk zo uit ziet: (1, 2, 4, 5, 6, 8, 10), dit script zal het dus weer netjes op een rijtje zetten: (1, 2, 3, 4, 5, 6, 7)
tableorder.php
<?php
function order($mysqli, $table, &$error = false){
$mysqli->autocommit(FALSE);
if (!$result = $mysqli->query("SELECT * FROM `".$table."`")) {
if($error !== false){
$error = "Error: ".mysqli_connect_error();
}
$mysqli->rollback();
return false;
exit();
} else {
if ($result = $mysqli->query("SELECT DATABASE() AS db")) {
$row = $result->fetch_assoc();
$db = $row["db"];
$query = "SELECT k.column_name
FROM information_schema.table_constraints t
JOIN information_schema.key_column_usage k
USING(constraint_name,table_schema,table_name)
WHERE t.constraint_type='PRIMARY KEY'
AND t.table_schema='".$db."'
AND t.table_name='".$table."'";
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_assoc()) {
$primary = $row["column_name"];
}
} else {
if($error !== false){
$error = "Something went wrong with Query: $query :: ". mysqli_connect_error();
}
$mysqli->rollback();
return false;
exit();
}
$result = $mysqli->query("SELECT * FROM `".$table."`");
$x = 1;
while($q = $result->fetch_assoc()){
$query = "UPDATE `".$table."` SET `".$primary."`='".$x."' WHERE `".$primary."`='".$q[$primary]."'";
if(!$mysqli->query($query)){
if($error !== false){
$error = "Something went wrong with query: $query :: ".mysqli_connect_error();
}
$mysqli->rollback();
return false;
exit();
}
$x++;
}
$count = $result->num_rows;
$mysqli->query("ALTER TABLE `".$table."` AUTO_INCREMENT =".$count);
} else {
if($error !== false){
$error = "Something went wrong by selecting the Table :: ".mysqli_connect_error();
}
$mysqli->rollback();
return false;
exit();
}
}
$mysqli->commit();
return true;
}
?>
Reacties
0