Ich habe die folgenden PHP-Funktionen, die die nächsten und vorherigen Zeilen in einer Datenbank bestimmen. Es gibt jedoch viele Gelegenheiten, bei denen Zeilen gelöscht werden können und daher funktionieren meine Funktionen nicht, da sie nur das Feld auto_increment dekrementieren.Wie bekomme ich vorherige und nächste Zeilen, obwohl einige Zeilen gelöscht wurden?
Zum Beispiel, aktuelle Reihe 5. Meine Funktion gibt: 4 (vorherige) und 6 (nächste). Was ist, wenn 6 und 7 gelöscht wird? Meine beste Idee ist es, weiter zu fragen, bis ich eine Zeile bekomme, aber das scheint ineffizient, gibt es einen besseren Weg?
Dank all
//function to get next tweet
function getNextTweet($key, $direction){
$sql = "SELECT tweet_id FROM tweets WHERE tweet_key = '$key' LIMIT 1";
$result = mysql_query($sql) or die("DB Error : ". mysql_error());
$result = mysql_fetch_assoc($result);
if($direction=='next'){
$tweet_id = $result['tweet_id'] + 1;
}else{
$tweet_id = $result['tweet_id'] - 1;
}
$sql = "SELECT * FROM tweets WHERE tweet_id = '$tweet_id' LIMIT 1";
$result = mysql_query($sql) or die("DB Error : ". mysql_error());
return mysql_fetch_assoc($result);
}
Lebensretter! Arbeitete perfekt, danke. :) – Abs
Was ist, wenn ich viele Datensätze bekomme? Gibt es eine Möglichkeit, die Anzahl der Zeilen zu limitieren, die die obigen Abfragen aufrufen? Ich meine nicht das LIMIT. Ich meine, wenn die MySQL DB tatsächlich nach den Datensätzen sucht? Danke für weitere Hilfe. – Abs
Die ID wird als Primärschlüssel indiziert, und Sie haben ein Limit von 1, also wird es immer schnell sein, sogar mit einem "Bajillion" -Datensatz. –