PHP bind_result 不向数组中插入值

PHP bind_result does not insert values into a array

我遇到了一个问题,即 bind_result 无法正常工作(我认为)。我想要 gamecode、admin、player2 等的值,但它不会将数据插入数组 daten2。我花了很多时间寻找问题,但无法弄清楚。

我使用了相同的代码,只是变量不同,而且运行良好。

player2、player3 等可能 EMPTY。以防万一这可能是个问题。

SQL 代码工作正常,我已经在 phpMyAdmin

中测试过了
$mysql = new mysqli("localhost", "root", "password", "name"); 
$mysql->set_charset("utf8");


$spalte = $_SESSION["GamecodeSession"];

$stmt = $mysql->prepare( "SELECT gamecode, admin, player2, player3, player4, player5, player6, player7, player8, player9 FROM room WHERE gamecode='$spalte'");
$stmt->bind_result($daten2[0], $daten2[1], $daten2[2], $daten2[3], $daten2[4], $daten2[5],$daten2[6],$daten2[7],$daten2[8],$daten2[9]);
$stmt->execute();
$stmt->close();

$_SESSION["NicknameAdminSession"] = $daten2[1];
echo "Admin:" . $_SESSION["NicknameAdminSession"] ; //The Session Variable is empty like every other

PS:对于我的英语拼写错误,我深表歉意,我的母语不是英语。 "daten"是德语,意思是数据。

您的代码存在一些问题:

  1. 您需要 session_start() 才能使用会话
  2. 您错误地使用了预处理语句
  3. 您在代码中的错误位置使用了 bind_result

代码:

<?php
session_start(); //Added

$mysql = new mysqli("localhost", "root", "password", "name"); 
$mysql->set_charset("utf8");


//This takes for granted GamecodeSession is always set    
$spalte = $_SESSION["GamecodeSession"]; 

//Do this instead

$spalte = '';
if (isset($_SESSION["GamecodeSession"])) {
    $spalte = $_SESSION["GamecodeSession"]; 
}

//You should never use value of an variable in the prepared statement:
$stmt = $mysql->prepare( "SELECT gamecode, admin, player2, 
player3, player4, player5, player6, player7, player8, player9 FROM room WHERE 
gamecode='$spalte'");

//Instead do this (placeholder :spalte)
$stmt = $mysql->prepare( "SELECT gamecode, admin, player2, 
player3, player4, player5, player6, player7, player8, player9 FROM room WHERE 
gamecode=?");

//Execute FIRST, then bind_result
//But before executing make sure $spalte value is included
$stmt->bind_param('s', $spalte); //s = string
$stmt->execute();

//Now bind columns to variables (after execution of the actual query)
$stmt->bind_result($daten2[0], $daten2[1], $daten2[2], 
$daten2[3], $daten2[4], $daten2[5],$daten2[6],$daten2[7],
$daten2[8],$daten2[9]);

$stmt->close();

$_SESSION["NicknameAdminSession"] = $daten2[1];
echo "Admin:" . $_SESSION["NicknameAdminSession"] ;