У меня неправильный синтаксис?
Определенно ДА.вы не обрабатываете ошибки.
Так что, если возникает ошибка, вы не имеете ни малейшего представления, что это такое.
хотя бы запустите ваши запросы таким образом и посмотрите, что с ними не так
mysql_query($query) or trigger_error(mysql_error()." ".$query);
Кроме того, ваш SELECT(IFNULL(SELECT MAX(posid)+1 FROM userlinks
подвыбор выглядит подозрительно, так как кажется, что вы не используете преимущество автоинкремента и в опасности состояния гонки.
также, как уже упоминалось, вы не избегаете своих строк,
Что касается вашей сортировки, то что бы я сделал:
- после вставки строки, обновите ее поле сортировки значением id.
- когда нам нужно поменять 2 строки - просто поменяйте местами значения сортировки.
вот код, довольно уродливый, но чтобы дать вам представление:
$id = intval($_POST['move']);
$place = db("SELECT place FROM $table WHERE id=$id");
if (!$id OR !$place) return(error("id or place is not set"));
if (isset($_POST['up'])) {
$sort = db("SELECT sort FROM $table WHERE id=$id");
$sort2 = db("SELECT max(sort) as msort FROM $table WHEREsort < $sort");
if ($sort2) $id2=db("SELECT id FROM $table WHEREsort = $sort2");
}
if (isset($_POST['down'])) {
$sort = db("SELECT sort FROM $table WHERE id=$id");
$sort2 = db("SELECT min(sort) as msort FROM $table WHEREsort > $sort");
if ($sort2) $id2 = db("SELECT id FROM $table WHERE sort = $sort2");
}
if ($sort2) {
$q1 = "UPDATE $table SET sort=$sort2 WHERE id=$id";
$q2 = "UPDATE $table SET sort=$sort WHERE id=$id2";
db($q1);
db($q2);
}
Что касается очистки ваших данных, обратитесь к этим вопросам
- Безопасная пользовательская переменная PHP
- В PHP при отправке строк в базу данных я должен позаботиться о недопустимых символах с использованием htmlspecialchars() или использовать регулярное выражение?
- Как включить переменную PHP в оператор вставки MySQL