我在我的mysql DDBB中定义了我的var,如下所示:
set @myVar = 1;
所以我想以这种方式从我的PHP代码中查阅这个var:
$sql="select @myVar";
$link = connectDB();//connects directly to the ddbb and returns connection object.
if(!$result=$link->query($sql)){
throw new Exception(" Mysql error ".$link->errno);
}
if(mysqli_num_rows($result)==1){
$row = $result->fetch_assoc();
}
echo ($row['@myVar']);
finally echo应该打印var值。但没有任何印刷品。这有什么问题?
非常感谢你的帮助。
答案 0 :(得分:1)
问题是显然你的代码刚刚连接到mysql数据库,然后尝试检索mysql user defined variable。根据链接文档:
用户定义的变量是特定于会话的。定义了用户变量 一个客户端无法被其他客户看到或使用。 (例外:A 有权访问性能模式user_variables_by_thread的用户 table可以查看所有会话的所有用户变量。)所有变量 当客户端退出时,将自动释放给定的客户端会话。
因此,在另一个会话(数据库连接)中定义的任何变量都不可用于您的代码。如果你需要在数据库调用之间传递数据,那么要么将它们保存在mysql表中,要么在从php代码中分配值并在那里保留值时检索这些值。
答案 1 :(得分:0)
这里展示了您遇到的问题
chris@dev:~$ mysql -e 'set @x=2; select @x'
+------+
| @x |
+------+
| 2 |
+------+
chris@dev:~$ mysql -e 'select @x'
+------+
| @x |
+------+
| NULL |
+------+
当建立新连接时,变量超出范围。