我强烈建议避免mysqli扩展。您应该使用一些数据库抽象库,而不是直接使用mysqli函数。mysqli类不适合单独使用。
如果您真的想使用纯mysqli类来做,则没有什么选择。
首先,您需要正确打开连接。这3行确保您已准备好连接:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // enable error reporting$mysqli = new mysqli('localhost', 'username', 'password', 'dbname');$mysqli->set_charset('utf8mb4'); // always set the charset然后,您需要准备一条语句,绑定参数并执行它。
$id = '10527391670258314752';$stmt = $mysqli->prepare('SELECt username FROM user_data WHERe id=?');$stmt->bind_param('s', $id);$stmt->execute();语句执行后,您需要获取结果。如果只有一个变量,则只需使用
bind_result()
$stmt->bind_result($_SESSION['name']);$stmt->fetch();echo $_SESSION['name'];
但是,不建议使用这种方法,也不是很灵活。相反,最好获取整个结果集并获取包含第一行的数组。
$result = $stmt->get_result();$row = $result->fetch_array();$_SESSION['name'] = $row['username'];echo $_SESSION['name'];
作为PDO的替代方案,相同的代码如下所示:
session_start();$pdo = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false,]);$id = '10527391670258314752';$stmt = $pdo->prepare('SELECt username FROM user_data WHERe id=?');$stmt->execute([$id]);$_SESSION['name'] = $stmt->fetchColumn();echo $_SESSION['name'];


