在php中获取先前执行的预准备语句的值

时间:2018-02-01 23:09:40

标签: php mysql mysqli

我已使用预准备语句设置变量,如下所示:

$CPI = $cxn->prepare('SET @CPI = ?');
$CPI->bind_param('d', $_POST['CPI_Esc']);
$CPI->execute();

我现在想在以后的php脚本中访问@CPI的值而不使用$_POST['CPI_Esc'].我已经尝试了以下内容,因为它在MySQL方面有意义:

$Check = "SELECT @CPI";
$Check = mysqli_query($cxn, $CPI);
echo $Check . " CPI value";

我很确定mysqli_query()在这里使用是错误的功能 - 我不确定使用哪个或者我是否接近这个错误的方式。我只是想在php中创建一个变量,以后我可以根据我以前执行的预处理语句的值来使用它。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

  

我只是想在php中创建一个我以后可以使用的变量

每个PHP运行都是一个单独的进程,其自身的变量范围不在其他进程之间共享。要存储要从不同运行中访问的值,您需要一些外部存储。以下是一些:

  • 数据库中的表,例如MySQL或MongoDB等等。
  • 磁盘上的文件。
  • APC缓存。
  • Memcache或Redis。

如果两个运行共享一个会话ID(例如,您通过刷新同一页面或浏览您的站点从浏览器访问它们),那么您可以利用PHP的内置会话存储和$_SESSION变量。请进一步阅读:http://php.net/manual/en/book.session.php因为您的里程可能会有所不同。

UPD。简要介绍如何使用会话变量访问同一页面的不同请求之间的数据。

  1. 将它放在php脚本之上:

    session_start();
    
  2. 使用通常的数组赋值将值存储在某个键下:

    $_SESSION['CPI'] = $_POST['CPI_Esc'];
    
  3. 稍后使用通常的数组取消引用访问它:

    echo "CPI value: {$_SESSION['CPI']}\n";
    
  4. 在通常情况下*这应该适合你。

    *通常情况包括:未完成的php配置;有足够的权限让php进程写入sessions目录;您的浏览器接受cookie。