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"是德语,意思是数据。
您的代码存在一些问题:
- 您需要
session_start()
才能使用会话
- 您错误地使用了预处理语句
- 您在代码中的错误位置使用了 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"] ;
我遇到了一个问题,即 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"是德语,意思是数据。
您的代码存在一些问题:
- 您需要
session_start()
才能使用会话 - 您错误地使用了预处理语句
- 您在代码中的错误位置使用了 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"] ;