不确定为什么我得到:变量数量与准备语句中的参数数量不匹配

Unsure why I am getting: Number of variables doesn't match number of parameters in prepared statement

我正在尝试做一个简单的测试,但遇到了错误。我正在尝试添加参数并进行了一些研究,none 其中帮助我了解哪里出错了。

我已经尝试在 PHP 网站和 Whosebug 上查找。这是一个测试项目。

$stmt = $con->prepare('SELECT username, rank, id, steamid, avatar FROM users WHERE id="$uid"');

$stmt->bind_param('i', $uid);
$stmt->execute();
$stmt->bind_result($username, $rank, $id, $steamid, $avatar);
$stmt->fetch();
$stmt->close();

我的预期结果是 select 仅使用“WHERE”调用指定的行。我的实际结果是这个错误:

mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement

您正在绑定一个变量,但准备好的语句中有零个参数。将 PHP 变量插入字符串是 不是 参数。

错误:零参数,仅字符串插值:

$stmt = $con->prepare('SELECT username, rank, id, steamid, avatar FROM users 
  WHERE id="$uid"');

右:一个参数:

$stmt = $con->prepare('SELECT username, rank, id, steamid, avatar FROM users
  WHERE id=?');

你得到错误是因为你没有在准备好的语句中使用 column name = ?。然后使用 bind_param 将值绑定到参数,设置参数并执行。

$stmt = $con->prepare('SELECT username, rank, id, steamid, avatar FROM users WHERE id = ?');

$stmt->bind_param('i', $uid);
//set parameters and execute
$uid = 'value here';
$stmt->execute();

$stmt->close();