使用 MySQLi 设置 MySQL 变量(不是 PHP 变量)

luc*_*eno 2 php mysql variables mysqli set

它适用于 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();       
    }
Run Code Online (Sandbox Code Playgroud)

从点击的地方订购

$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)";
Run Code Online (Sandbox Code Playgroud)

SET PHP VARIABLE INSTEAD OF 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);
Run Code Online (Sandbox Code Playgroud)

问题?我需要使用一个 MySQL 查询进行更快的查询

这不起作用:

设置 MYSQL 变量而不是 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);
Run Code Online (Sandbox Code Playgroud)

VMa*_*Mai 5

您必须使用用户定义的变量:

用户定义的变量

您可以在一个语句中将一个值存储在用户定义的变量中,然后在另一个语句中引用它。这使您能够将值从一个语句传递到另一个语句。用户定义的变量是特定于会话的。也就是说,一个客户端定义的用户变量不能被其他客户端看到或使用。给定客户端会话的所有变量在该客户端退出时自动释放。

用户变量写为@var_name,其中变量名 var_name 由字母数字字符、“.”、“_”和“$”组成。如果将用户变量名称引用为字符串或标识符(例如,@'my-var'、@"my-var" 或 @ my-var),则该名称可以包含其他字符。

$query .= "SET @other = $other;"; // return: Unknown system variable 'other'
Run Code Online (Sandbox Code Playgroud)