Задайте переменные MySQL с MySQLi (а не переменными PHP)

Это работа с переменными PHP:

Подготовление одного результата из функции запроса

extract($GLOBALS); $GLOBALS['mysqli'] = $mysqli; function select($a,$b){ $mysqli = $GLOBALS['mysqli']; $query = $mysqli -> query($b); while($row = ($query -> fetch_assoc())){ return $row[$a]."<br>"; }// while $query -> free(); } 

заказать с

 $self = "SELECT order FROM channels WHERE id='$id'"; $self = "(SELECT order FROM (($self)AS x))"; if($btn == "Up"){ // Order previows $other = "SELECT MAX(order) FROM channels WHERE order < $self"; } if($btn == "Down"){ // Order next $other = "SELECT MIN(order) FROM channels WHERE order > $self"; } $other = "SELECT order FROM channels WHERE order=($other)"; 

SET PHP ПЕРЕМЕННАЯ ВМЕСТО MYSQL VARIABLE $ other = select ('order', $ other);

 $query = "UPDATE channels SET order=$self WHERE order='$other';"; $query .= "UPDATE channels SET order='$other' WHERE id='$id'"; $mysqli->multi_query($query); 

Проблема? Мне нужен более быстрый запрос, используя один запрос MySQL

Это не работает:

SET MYSQL ПЕРЕМЕННАЯ ВМЕСТО O PHP ПЕРЕМЕННАЯ

 $query = "DEFINE other INT;"; // return: 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 'DEFINE other INT(...); $query .= "DECLARE other INT;"; // return: 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 'DECLARE other INT(...); $query .= "SET other = $other;"; // return: Unknown system variable 'other' $query .= "UPDATE channels SET order=$self WHERE order=other;"; $query .= "UPDATE channels SET order=other WHERE id='$id'"; $mysqli->multi_query($query); 

    Вы должны использовать пользовательскую переменную :

    Пользовательские переменные

    Вы можете сохранить значение в пользовательской переменной в одном из операторов, а затем ссылаться на нее позже в другом выражении. Это позволяет передавать значения из одного утверждения в другое. Определяемые пользователем переменные зависят от сеанса. То есть, пользовательская переменная, определенная одним клиентом, не может быть видна или использована другими клиентами. Все переменные для данного сеанса клиента автоматически освобождаются при выходе этого клиента.

    Пользовательские переменные записываются как @var_name , где имя переменной var_name состоит из буквенно-цифровых символов «.», «_» И «$». Имя переменной пользователя может содержать другие символы, если вы указываете его как строку или идентификатор (например, @ 'my-var', @ "my-var" или @ my-var ).

     $query .= "SET @other = $other;"; // return: Unknown system variable 'other'