【问题标题】:Set MySQL Variables with MySQLi (not PHP variables)使用 MySQLi 设置 MySQL 变量(不是 PHP 变量)
【发布时间】:2014-07-20 18:39:34
【问题描述】:

它适用于 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)";

设置 PHP 变量而不是 MYSQL 变量 $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 查询的更快查询

这不起作用:

设置 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);

【问题讨论】:

    标签: php mysql variables mysqli set


    【解决方案1】:

    你必须使用user defined variable:

    用户定义的变量

    您可以在一个语句中将值存储在用户定义的变量中,并且 然后在稍后的另一个声明中引用它。这使您可以通过 从一个语句到另一个语句的值。用户定义的变量是 会话特定的。即一个客户端定义的用户变量 其他客户无法看到或使用。给定的所有变量 客户端退出时会自动释放客户端会话。

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

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

    【讨论】:

    • 所以整行可能是这样的? $query = "SET @other = $other;"; $query .= "更新频道 SET order=$self WHERE order=@other;"; $query .= "更新频道 SET order=@other WHERE id='$id'"; $mysqli->multi_query($query);
    猜你喜欢
    • 2014-09-21
    • 2016-02-06
    • 2020-04-07
    • 2012-09-25
    • 2011-08-22
    • 2012-11-19
    • 2013-02-07
    • 2014-02-20
    • 2011-12-07
    相关资源
    最近更新 更多