PHP bind_结果不会将值插入数组

PHP bind_结果不会将值插入数组,php,mysqli,Php,Mysqli,我有一个问题,绑定结果不起作用,我想。我想要gamecode、admin、player2等的值,但它不会将数据插入数组daten2。我花了很多时间寻找这个问题,但没能找到答案 我对不同的变量使用了相同的代码,效果很好 player2、player3等可能为空。以防万一,这可能是个问题 SQL代码运行良好,我已经在phpMyAdmin中对其进行了测试 $mysql = new mysqli("localhost", "root", "password", "name"); $mysql->

我有一个问题,绑定结果不起作用,我想。我想要gamecode、admin、player2等的值,但它不会将数据插入数组daten2。我花了很多时间寻找这个问题,但没能找到答案

我对不同的变量使用了相同的代码,效果很好

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

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

我为我的英语拼写错误道歉,我不是以英语为母语的人。daten是德语,表示数据

您的代码存在一些问题:

在使用会话之前,您需要启动会话 您错误地使用了准备好的语句 您在代码中的错误位置使用了bind_结果 代码:


谢谢你的回答!我已经用变量替换了数组,例如:$daten2[0]现在是$gamecode,仍然不起作用。在后面的代码中,我将使用另一个sql语句更新,以防出现问题。感谢您提供了非常详细的解释,以提高我的php知识。我试着理解你的代码并将其复制到我的代码中,但仍然无法工作。如果您需要我提供更多代码,请告诉我。哪些代码不起作用?你得到了什么错误?我没有得到错误,变量只是空的。当我回显它们时,没有输出。示例:echo播放器2:$玩家2;输出:Player2:将列绑定到您自己设置的变量:在这里,您希望向播放器显示您必须回显Player2:$日期2[2]';因为您在bind_结果中设置了$daten2[2],它是第三列$daten2[0]将是游戏代码,$daten2[1]将是管理员等。仅为了调试,您可以执行var_dump$daten2;我发现了错误,是的,它值得每一次否决票。。。变量$spalte是一个整数而不是字符串。那完全是我的错,不是你的错。但是你的回答真的帮助了我。非常感谢。
<?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"] ;